Ank*_*lok 0 c++ copy copy-constructor
我写了一个简单的C++程序来测试C++中默认复制行为的概念.所以,我有一个示例类X,我创建了一个名为"var"的X类对象,然后我尝试使用"var"初始化另一个名为"defaultCopyObject"的对象,假设默认复制行为只是一个对象的成员副本到另一个.我已正确理解了这个概念,但我无法理解用于初始化的语法.
X defaultCopyObject{var};// this code snippet works perfectly fine
// this code snippet returns a compile time error
X defaultCopyObject;
defaultCopyObject{var};
Run Code Online (Sandbox Code Playgroud)
有人可以解释我为什么前一个声明有效而后一个无效?
X defaultCopyObject{var};调用的构造函数X.只有在首次实例化变量时才能调用构造函数.
在第二个示例中,变量在调用时已经实例化defaultCopyObject{var};,因此无法再次调用构造函数.
请注意,在实例化变量后,您仍然可以使用复制赋值运算符:
defaultCopyObject = var;
Run Code Online (Sandbox Code Playgroud)