函数参数为 对象的引用时,不会调用拷贝构造函数:
class A {
public:
int *pa;
public:
A(int x){
cout << "调用构造函数初始化成员变量" << endl;
pa = new int;
*pa = x;
};//构造
A(const A& obj){ //拷贝构造
cout << "调用了拷贝构造函数,复制被调用的对象" << endl;
pa = new int;
*pa = *(obj.pa); //如果使用 pa = obj.pa 会出现错误, 注意
}
~A() {
cout << "调用析构函数释放内存" << endl;
delete pa;
}
};
void transfer(A& obj) {
cout << "pa的地址: " << obj.pa << "\npa的值: "<
}
A returnObj(A obj) {
return obj;
}
运行结果为:
调用构造函数初始化成员变量
调用了拷贝构造函数,复制被调用的对象
调用了拷贝构造函数,复制被调用的对象
pa的地址: 001FA3B8
pa的值: 1
调用了拷贝构造函数,复制被调用的对象
调用了拷贝构造函数,复制被调用的对象
调用析构函数释放内存
调用析构函数释放内存
调用了拷贝构造函数,复制被调用的对象
调用了拷贝构造函数,复制被调用的对象
调用析构函数释放内存
调用析构函数释放内存
调用析构函数释放内存
调用析构函数释放内存
调用析构函数释放内存
Chaos
Chaos
453***330@qq.com8个月前 (09-15)