And*_*rew 12 c++ constructor default-constructor copy-assignment
这有什么区别:
TestClass t;
Run Code Online (Sandbox Code Playgroud)
还有这个:
TestClass t = TestClass();
Run Code Online (Sandbox Code Playgroud)
我希望第二个可能会调用构造函数两次然后调用operator =,而是调用构造函数一次,就像第一次一样.
Luc*_*ore 15
TestClass t;
Run Code Online (Sandbox Code Playgroud)
调用默认构造函数.
TestClass t = TestClass();
Run Code Online (Sandbox Code Playgroud)
是一个复制初始化.它将调用默认构造函数TestClass(),然后调用复制构造函数(理论上,复制需要复制省略).这里没有任务.
还有直接初始化的概念:
TestClass t(TestClass());
Run Code Online (Sandbox Code Playgroud)
如果要使用赋值运算符:
TestClass t;
TestClass s;
t = s;
Run Code Online (Sandbox Code Playgroud)