#include <iostream>
using namespace std;
struct CTest
{
CTest() { cout << "Constructor called"; }
CTest(string s) { cout << "Any constructor with parameters"; }
};
int main () {
CTest t1;
CTest t2{};
}
我来自Java世界,因为这两行都调用了t1
的构造函数,因此只会声明CTtest
,但绝对不是这种情况。在这种情况下,t1调用覆盖的默认构造函数以及t2。是否存在实际上有所不同的情况,或者我们是否总能省略大括号?
也许只是我,但我找不到任何暗示。只讨论何时使用大括号与括号(对比值与复制构造函数)。
答案 0 :(得分:0)
当一个类的唯一构造函数是它的默认构造函数时,用大括号进行初始化并不重要:
CTest t1;
CTest t2{};
是一样的。
只有当你有其他的构造函数接受那些将这些参数的值放在{}
中并且你正在做一些新事物的参数时。