注册 登录
编程论坛 C++教室

关于构造函数调用问题,求指教,

Gopiny 发布于 2014-03-12 14:25, 327 次点击
程序代码:
#include<iostream>
using namespace std;
class MyClass
{
public:
    MyClass(int n){
    number = n;
}

MyClass(MyClass &other){ //拷贝构造函数
    number=other.number;
    cout<<"被调用1次";
}
~MyClass(){}
private:
    int number;
};
MyClass fun(MyClass p)
{
    MyClass temp(p);
    return temp;

}
int main()
{
    MyClass obj1(10), obj2(0);
    MyClass obj3(obj1);
   
    obj2=fun(obj3);
    return 0;
}


为什么拷贝构造函数会被调用4次的?
2 回复
#2
rjsp2014-03-12 15:16
MyClass obj3(obj1); 一次拷贝构造
fun(obj3) 时,obj3参数传递一次
MyClass temp(p); 又一次
return temp; 这里又一次,但这里可以用“具名返回值优化”,所以这一次可能被优化掉
即有 3到4次 调用拷贝构造函数

BTW:你的代码真烂,尤其是 MyClass(MyClass &other) 竟然不知道写成 MyClass( const MyClass& other )
#3
Gopiny2014-03-12 16:29
回复 2楼 rjsp
谢谢了,好吧,确实很烂,学艺不精,
1