[英]C++11 Difference in Constructors (Braces)
我对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
头文件为
class MyClass {
public:
MyClass();
void do_work();
};
你能解释一下,创建对象的三种方式之间的区别是什么? 为什么第二种方式会产生编译错误?
方法一和三调用默认构造函数。
MyClass c3{};
是一种称为统一初始化的新初始化语法。 这称为默认大括号初始化。 然而:
MyClass c2();
声明一个函数c2
,它不带任何带MyClass
返回类型的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.