#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。是否有任何情况可以真正发挥作用,或者我们总是可以省略大括号吗?
也许只有我,但我找不到任何提示。只有关于何时使用大括号与括号(vs. 值与复制构造函数)的讨论。
当类的唯一构造函数是其默认构造函数时,使用大括号进行初始化并不重要:
CTest t1;
CTest t2{};
是一样的。
只有当你有其他构造函数接受参数,将这些参数的值放在{}
里面时,你正在做一些新的事情。