相关疑难解决方法(0)

C++ 11构造函数(大括号)的区别

我对C++很陌生并观察到,以下代码行的行为不同

MyClass c1;
c1.do_work() //works
MyClass c2();
c2.do_work() //compiler error c2228: left side is not a class, structure, or union.
MyClass c3{};
c3.do_work() //works
Run Code Online (Sandbox Code Playgroud)

头文件为

class MyClass {
public:
    MyClass();
    void do_work();
};
Run Code Online (Sandbox Code Playgroud)

你能解释一下,创建对象的三种方式之间的区别是什么?为什么第二种方式会产生编译错误?

c++ constructor most-vexing-parse c++11

4
推荐指数
2
解决办法
378
查看次数

标签 统计

c++ ×1

c++11 ×1

constructor ×1

most-vexing-parse ×1