我对下面的代码问题:拷贝构造函数和operator =在C++
让我们说我有了一个拷贝构造函数和接收一个字符串值常规构造一类p。
我有以下代码:
P doSomething(){
P p("myValue");
return p;
}
int main(){
P m=doSomething();
return 1;
}
- 为什么不拷贝构造函数在
doSomething()
函数的调用return p
? - 通话
P m=doSomething()
- 它想调用拷贝构造函数或操作=? 的情况下,这是运营商=,就是这段代码的差异及以下内容:(拷贝构造函数我知道这里的呼叫)
P new_val=("newVal"); p m=new_val;
谢谢, 玛丽
可能重复[为什么析构函数被调用一次?(http://stackoverflow.com/questions/ 6422114/why-has-the-destructor-been-called-only-once) –
你可以发布你在'class P'中定义的拷贝构造函数的代码吗? – cpx
在初始化一个变量时,即使您正在编写'=',也始终使用复制构造函数。关于为什么它没有在你的例子中使用,可能是编译器优化了你的代码? – Shahbaz