1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- //4、3、3 拷贝构造函数的调用时机
- //C++中拷贝构造函数调用时机通常有三种情况
- //⚪使用一个已经创建完毕的对象来初始化一个新对象
- //⚪值传递的方式给函数参数传值
- //⚪以值方式返回局部对象
- #include <iostream>
- #if(0)
- class Person
- {
- public:
- Person()
- {
- std::cout << "Person默认构造函数的调用" << std::endl;
- }
- Person(int age)
- {
- m_Age = age;
- std::cout << "Person有参构造函数的调用" << std::endl;
- }
- Person(const Person& p)
- {
- std::cout << "Person拷贝构造函数的调用" << std::endl;
- m_Age = p.m_Age;
- }
- ~Person()
- {
- std::cout << "Person默认析构函数的调用" << std::endl;
- }
- int m_Age;
- };
- //1、使用一个已经创建完毕的对象来初始化一个新对象
- void test01()
- {
- Person p1(20);
- Person p2(p1);
- std::cout << "P2的年龄为:" << p2.m_Age << std::endl;
- }
- //2、值传递的方式给函数参数传值
- void doWork(Person p)
- {
- }
- void test02()
- {
- Person p;
- doWork(p);
- }
- //3、以值方式返回局部对象
- Person doWork2()
- {
- Person p1;
- std::cout << (int*)&p1 << std::endl;
- return p1;
- }
- void test03()
- {
- Person p = doWork2();
- std::cout << (int*)&p << std::endl;
- }
- int main()
- {
- //test01();
- //test02();
- test03();
- system("pause");
- return 0;
- }
- #endif
|