Example
1
2
3
4
5
6
7
8
9
10
11
class Student {
int m_age;
Student() {
this.m_age = 0;
}
Student(int age) {
this.m_age = age;
}
};
关于默认构造函数
如果有初始化工作要做,比如成员有默认值,在没有自定义构造函数下,编译器回生成默认的无参构造器
关于创建对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// 调用无参构造函数(如果有),且会初始化成员变量
Student g_student1;// 全局区
// 注意这是函数声明,并不会创建对象
Student student2();
// 栈空间
// 调用无参构造函数(如果有),不会初始化成员变量
Student student1;
Student student2(10)
// 注意这是函数声明,并不会创建对象
Student student3();
// 堆空间(new)
// 调用无参构造函数(如果有),不会初始化成员变量
Student *student1 = new Student;
// 1.没有构造函数情况下,会初始化成员变量
// 2. 调用无参构造函数,不会额外执行初始化成员变量的工作
Student *student1 = new Student();
Student *student2 = new Student(10);
delete student1;
delete student2;
// 堆空间(malloc)
// 不会调用构造函数
Student *student = (Student*)malloc(sizeOf(Student));
student1->m_age = 10;
free(student);
References
https://ke.qq.com/webcourse/336509/100476446#taid=3185856416653949&vid=5285890793625674922