nic*_*225 4 c++ constructor copy-constructor copy-elision
我有以下类,其中定义了普通构造函数和复制构造函数。
\n#include <iostream>\n\nclass Bla\n{\npublic:\n Bla()\n {\n std::cout << "Normal Constructor Called\\n";\n }\n\n Bla(const Bla& other)\n {\n std::cout << "Copy Constructor Called\\n";\n }\n\n};\n\nint main() \n{\n Bla a = Bla(); // prints Normal Constructor\n}\nRun Code Online (Sandbox Code Playgroud)\n在主函数中,它按照我的预期打印普通构造函数,并且仅打印普通构造函数。但是,如果我将复制构造函数设为类的私有成员,编译器会给出错误
\nerror: \xe2\x80\x98Bla::Bla(const Bla&)\xe2\x80\x99 is private within this context\nRun Code Online (Sandbox Code Playgroud)\n从表面上看,似乎调用了复制构造函数,但我没有看到从中打印任何内容。复制构造函数是否被隐式调用?这里发生了什么?
\n