2023.4.17
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 }