🔥系列专栏:【C++学习笔记】更新中…
1️⃣概述
本章内容是:拷贝函数什么时候会被调用?它的调用时机在哪?
为此我们先做好准备,创建一个类person,代码如下:
#include <iostream>
using namespace std;
class person{
public:
int p_age;
//无参构造函数
person() {
cout<<"无参构造函数被调用了"<<endl;
p_age = 0;
}
//有参构造函数
person(int age) {
cout<<"有参构造函数被调用了"<<endl;
p_age = age;
}
//拷贝构造函数
person(const person& p) {
cout<<"拷贝构造函数被调用了"<<endl;
p_age = p.p_age;
}
};
好了,现在来看看拷贝构造函数的调用时机!
2️⃣调用时机
- 第一种情况: 用一个对象去初始化另一个对象时,会调用拷贝构造函数
代码如下:
int main( ) {
person p(18);
person p1(p);
return 0;
}
运行结果如图:
有参构造函数被调用了
拷贝构造函数被调用了
- 第二种情况:对象以值传递的方式传递给函数参数时,会调用拷贝构造函数
代码如下:
void func( person p1){
cout<<"函数func被调用了"<<endl;
}
int main( ) {
person p(18);
func(p);// 在这里,会调用拷贝构造函数
return 0;
}
运行结果为:
有参构造函数被调用了
拷贝构造函数被调用了
函数func被调用了
当然还有第三种情况,就是函数以值传递的形式返回一个局部对象。
好了,先看到这,如果文章对你有所帮助,记得点赞支持博主哦!
欢迎大家来评论区讨论!