它们之间的区别是什么
MyClass mc = MyClass();和
MyClass mc;在C++?
发布于 2012-08-14 19:36:56
第一个调用复制构造函数,将临时对象作为参数- MyClass()创建临时对象。
第二个调用默认构造函数。
实际上,在大多数情况下,它们被优化为相同的代码,但这是语义上的区别。
正如内格尔提到的,这种情况与POD类型略有不同;当"MyClass“为POD时,第二个代码段不会对mc进行值初始化,而第一个代码段将对其进行值初始化。
发布于 2012-08-14 19:37:18
第一个是复制初始化,第二个是默认初始化。
例如,以下代码将无法编译:
class MyC
{
public:
MyC(){}
private:
MyC(const MyC&) {}
};
int main()
{
MyC myc = MyC();
return 0;
}发布于 2012-08-14 19:34:06
自定义复制构造函数和默认构造函数。
https://stackoverflow.com/questions/11951365
复制相似问题