#include <iostream>
#include <string>
using namespace std;
//定义一个人类
class Person
{
//公共接口
public:
//无参构造(默认构造)函数
Person()
{
cout << "Person默认构造函数的调用" << endl;
}
//有参构造
Person(int age)
{
cout << "Person有参构造函数的调用" << endl;
m_Age = age;//输入的age给m_Age
}
//拷贝构造函数
Person(const Person &p)
{
cout << "Person拷贝构造函数的调用" << endl;
m_Age = p.m_Age;//输入p的age属性给m_Age
}
//析构函数
~Person()
{
cout << "Person析构函数的调用" << endl;
}
//定义一个变量
int m_Age;
};
//调用函数
//使用一个已经创建完毕的对象来初始化一个新对象
//void test1()
//{
//
// Person p1(20);//有参函数的调用
// Person p2(p1);//拷贝构造函数的调用
//
// //验证拷贝构造函数
// cout << "p2的年龄为:" << p2.m_Age << endl;
//}
void doWork(Person p)
{
}
//值传递的方式给函数参数传值
void test2()
{
Person p;//默认构造
doWork(p);//值传递
}
Person doWork2()
{
Person p1;//局部对象(执行完被释放)
return p1;//创建新对象
}
//值方式返回局部对象
void test3()
{
Person p = doWork2();//拷贝函数调用
}
int main()
{
//test1();
//test2();
test3();
system("pause");
return 0;
}
拷贝构造函数调用时机
最新推荐文章于 2024-10-31 18:26:46 发布
这篇文章展示了C++中如何定义和使用构造函数、有参构造函数、拷贝构造函数和析构函数。通过创建Person类,演示了对象的初始化、值传递以及返回局部对象时拷贝构造函数的调用情况。
摘要由CSDN通过智能技术生成