C++核心编程——P25-拷贝构造函数调用时机

拷贝构造函数调用时机

C++中拷贝构造函数调用时机通常有三种情况

  • 使用一个已经创建完毕的对象来初始化一个新对象
  • 值传递的方式给函数参数传值
  • 以值方式返回局部对象
cpp 复制代码
#include<iostream>
using namespace std;
class Person
{
public:
	Person()
	{
		cout << "Person的默认构造函数调用" << endl;
	}
	Person(int age)
	{
		cout << "Person的有参构造函数调用" << endl;
		m_Age = age;
	}
	Person(const Person& p)
	{
		cout << "Person的拷贝构造函数调用" << endl;
		m_Age = p.m_Age;
	}
	~Person()
	{
		cout << "Person的析构函数调用" << endl;
	}
	int m_Age;	
};
//使用一个已经创建完毕的对象来初始化一个对象
void test01()
{
	Person p1(20);
	Person p2(p1);
	cout << "p2的年龄为" << p2.m_Age << endl;
}
//值传递的方式给函数参数传值
void dowork(Person p)
{
	
}
void test02()
{
	Person p;
	dowork(p);
}
//值方式返回局部对象
Person dowork2()
{
	Person p1;
	cout << (int*)&p1 << endl;
	return p1;
}
void test03()
{
	Person p = dowork2();//拷贝调用,类似于上一节的隐式转换法,
                         //Person p5 = p4;//拷贝构造
	                     //Person p3 = Person(p2);//拷贝
	cout << (int*)&p << endl;
}

int main(void)
{
	//test01();
	//test02();
	test03();
	system("pause");
	return 0;
}
相关推荐
山居秋暝LS24 分钟前
学习OpenCV C++版
c++·opencv·学习
要下雨了吗27 分钟前
指针数组 vs 数组指针
c语言·数据结构·c++·算法·visual studio
阿里云云原生1 小时前
如何使用通义灵码辅助学习C++编程 - AI编程助手提升效率
c++
qq_433554541 小时前
C++ 蓝桥云课代码练习
c++·算法·图论
ChoSeitaku3 小时前
NO.82十六届蓝桥杯备战|动态规划-从记忆化搜索到动态规划|下楼梯|数字三角形(C++)
c++·蓝桥杯·动态规划
ChoSeitaku3 小时前
NO.73十六届蓝桥杯备战|搜索算法-剪枝与优化-记忆化搜索|数的划分|小猫爬山|斐波那契数|Function|天下第一|滑雪(C++)
c++·蓝桥杯·剪枝
龙虾在剥我的壳3 小时前
OpenCV——图像融合
c++·opencv·计算机视觉
末央&4 小时前
【C++】list底层封装和实现
c++·windows·list
Zhichao_974 小时前
【UE5 C++课程系列笔记】35——HTTP基础——HTTP客户端异步请求API接口并解析响应的JSON
c++·ue5
阿猿收手吧!4 小时前
【QT】QPixmap QImage QBitmap QPicture
开发语言·c++·qt