1、用一个对象初始化另一个对象
2、对象以值传递的方式传给函数参数
3、函数局部对象以值传递的方式从函数返回(vs debug 模式下调用一次拷贝构造,qt 不调用任何构造)
下面举例说明:
/****************************************************
* brief : 简单的类的引入
* author : shao
* date : 2020-02-27
* note : none
*
****************************************************/
#include <iostream>
using namespace std;
class Person{
public:
Person()
{
cout << "Person 无参构造函数!" << endl;
}
Person(int a)
{
cout << "Person 有参构造函数!" << endl;
}
Person(const Person &p)
{
cout << "Person 拷贝构造函数!" << endl;
}
~Person()
{
cout << "Person 析构函数!" << endl;
}
};
void copyConstructorTest1(Person p_test)
{
cout << "对象作为值传递!" << endl;
}
Person copyConstructorTest2(void)
{
Person p;
cout << "函数返回局部对象!" << endl;
return p;
}
void test01(void)
{
Person p1(10); //这里调用有参构造函数
/* 1、使用存在的对象来初始化对象 */
Person p2(p1);
/* 2、对象作为值传递的方式来调用 */
copyConstructorTest1(p2);
/* 3、函数返回局部对象 */
Person p3 = copyConstructorTest2();
}
int main(void)
{
test01();
return 0;
}
结果如下: