在C++中实例化带大括号与不带大括号的变量有什么区别?


#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{};

是一样的。

只有当你有其他构造函数接受参数,将这些参数的值放在{}里面时,你正在做一些新的事情。

相关内容

  • 没有找到相关文章

最新更新