本人将持续在这里更新C++学习记录 本次将学习CPP构造函数调用规则

看到这里啦

前一节也是重点!
//创建一个类,C++编译器会给每个类添加3个构造函数
//默认构造 析构函数 拷贝构造(值拷贝)

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
28
29
30
31
32
class Person
{


public:


//默认构造
Person()
{
cout << "Person无参数构造函数" << endl;
}
//有参数构造
Person(int a)
{
age = a;
cout << "Person有参数构造函数" << endl;
}
//拷贝构造函数
Person(const Person& p)
{
age = p.age;
cout << "Person拷贝构造函数" << endl;

}
~Person() //析构函数就算不加执行完也会调用
{
cout << "Person析构函数" << endl;
}
int age;

};

就算把拷贝构造函数注释调下面这段代码也能正常调用
结果为
Person无参数构造函数
P2的年龄为:19
Person析构函数
Person析构函数

1
2
3
4
5
6
7
8
void test01()
{
Person p;
p.age = 19;
Person p2(p); //本人没创建拷贝构造函数
cout << "P2的年龄为:" <<p2.age<< endl;

}

因为编译器帮你写了。

注意:自己写的高级构造函数(拷贝>有参>默认)会屏蔽编译器的低级构造函数!