用于创建类实例的C++语法

Muh*_*eed 3 c++ class instance c++11

我一直在研究如何在C++中创建一个类的实例.似乎有几种方法可以做到这一点:

ClassExample classExample1;
ClassExample classExample2();
ClassExample classExample3(void);
ClassExample classExample4 = ClassExample();
Run Code Online (Sandbox Code Playgroud)

1和4调用默认构造函数.当我使用2和3时,我似乎无法引用变量并且它们未初始化.在调试器中,它们被逐步调整.为什么是这样?这些都一样吗?有什么不同?有首选吗?

当我们有参数传递时,有两种方法可以做到这一点:

ClassExample classExample1(true, 1, "");
ClassExample classExample2 = ClassExample(true, 1, "");
Run Code Online (Sandbox Code Playgroud)

再说一次,有区别吗?什么是首选方案?

UPDATE

C++ 11还引入了这种初始化形式:

ClassExample classExample2{ };
Run Code Online (Sandbox Code Playgroud)

这是以下的平等:

ClassExample classExample2();
Run Code Online (Sandbox Code Playgroud)

P0W*_*P0W 8

没有首选方案的问题

ClassExample classExample2();

ClassExample classExample3(void);

声明一个返回ClassExample对象的函数