-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path类和对象-对象特性-构造函数调用规则.cpp
54 lines (51 loc) · 1.55 KB
/
类和对象-对象特性-构造函数调用规则.cpp
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
using namespace std;
//默认情况下,C++编译器至少给一个类添加三个函数
//1、默认构造函数(无参,函数体为空)
//2、默认析构函数(无参,函数体为空)
//3、默认拷贝函数,对属性进行值拷贝
/*构造函数调用规则如下:(1)如果用户定义有参构造函数,C++不再提供默认无参构造,但是会提供默认拷贝构造
(2)如果用户定义拷贝构造函数,C++不会再提供其他构造函数*/
class Person
{
public:
int m_Age;
// Person()
// {
// cout << "Person默认构造函数" << endl;
// }
// Person(int age)
// {
// cout << "Person有参构造函数" << endl;
// m_Age = age;
// }
Person(const Person &p)
{
cout << "Person的拷贝构造函数调用" << endl;
m_Age = p.m_Age;
}
~Person()
{
cout << "Person的析构函数调用" << endl;
}
};
// void test01()
// {
// Person p;
// p.m_Age = 18;
// Person p2(p);//这里运行完会被赋值18的原因在于:
// //默认情况下,C++编译器至少给一个类添加三个函数
// //1、默认构造函数(无参,函数体为空)
// //2、默认析构函数(无参,函数体为空)
// //3、默认拷贝函数,对属性进行值拷贝
// cout << "P2年龄为: " << p2.m_Age << endl;
// }
void test02()
{
Person p;
}
int main()
{
//test01();
test02();
}