Home cpp constructor
Post
Cancel

cpp constructor

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

This post is licensed under CC BY 4.0 by the author.