-
Notifications
You must be signed in to change notification settings - Fork 3
/
17_类与对象_对象特征_02.cpp
71 lines (58 loc) · 1.58 KB
/
17_类与对象_对象特征_02.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
using namespace std;
// 构造函数的分类及调用
// 分类:
// 按照参数分类: 无参构造 与 有参构造
// 按照类型分类: 普通构造 与 拷贝构造
class Person
{
public:
int age;
// 无参构造(默认构造)
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;
}
};
// 调用
void test01()
{
// 1、括号法
// Person p1; //默认构造函数调用
// Person p2(10); // 有参构造函数
// Person p3(p2); // 拷贝构造函数
// 注意事项:调用默认构造函数时,不要加()(避免和函数声明语法冲突)
// cout << p2.age << endl;
// cout << p3.age << endl;
// 2、显式法
// Person p1;
Person p2 = Person(10); // 调用有参构造
Person p3 = Person(p2); // 拷贝构造
// Person(10); // 匿名对象 特点:当前执行结束后,系统会立即回收掉匿名对象
// 注意事项:不要利用拷贝构造函数来初始化匿名对象
// 3、隐式转换法
Person p4 = 10; // 相当于 Person p4 = Person(10);
Person p5 = p4; // 拷贝构造
}
int main()
{
test01();
return 0;
}