1 //拷贝构造函数的调用时机
2 #include <iostream>
3 using namespace std;
4 //1.使用一个已经创建完的对象来初始化一个新对象
5 //2.值传递的方式给函数参数传值
6 //3.值方式返回局部对象
7 class Person
8 {
9 public:
10 Person()
11 {
12 cout<<"Person默认构造函数调用"<<endl;
13 }
14 Person (int age)
15 {
16 cout<<"Person有参构造函数调用"<<endl;
17 m_Age = age;
18 }
19 Person(const Person &p)
20 {
21 cout<<"Person拷贝构造函数调用"<<endl;
22 m_Age = p.m_Age;
23 }
24 ~Person()
25 {
26 cout<<"Person析构函数调用"<<endl;
27 }
28 int m_Age;
29 };
30 //1.使用一个已经创建完的对象来初始化一个新对象
31 void test01()
32 {
33 Person p1(20);
34 Person p2(p1);
35 cout<<"p2的年龄为:"<<p2.m_Age<<endl;
36 }
37 //2.值传递的方式给函数参数传值
38 void doWork(Person p)
39 {
40
41 }
42 void test02()
43 {
44 Person p;
45 doWork(p);
46 }
47 //3.值方式返回局部对象
48 Person doWork2()
49 {
50 Person p1;
51 return p1;
52 }
53 void test03()
54 {
55 Person p = doWork2();
56 }
57
58 int main()
59 {
60 test01();
61 test02();
62 test03();
63 return 0;
64 }