0
#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 一样调用被覆盖的默认构造函数。是否有任何情况下它实际上有所作为,或者我们总是可以省略大括号?

也许这只是我,但我找不到任何暗示。只有关于何时使用大括号与圆括号(与值与复制构造函数)的讨论。

4

1 回答 1

0

当类的唯一构造函数是其默认构造函数时,使用花括号进行初始化无关紧要:

CTest t1;
CTest t2{};

是相同的。

只有当你有其他构造函数接受参数,将这些参数的值放入其中时{},你才会做一些新的事情。

于 2014-01-08T03:24:21.077 回答