C++ class 初始化赋值问题?
伊谢尔伦
伊谢尔伦 2017-04-17 13:22:50
0
1
424

第一个有自动生成默认构造函数吗?
为什么第二个不可以编译通过?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(1)
大家讲道理

第一个有自动生成默认构造函数吗?

有,当一个类内没有任何用户定义的构造函数的时候,编译器会生成默认构造函数。参见 Default constructors。


为什么第二个不可以编译通过?

如果一个类想要使用大括号列表的方式,进行成员初始化,那么这个类必须满足 aggregate class 的条件。而在 aggregate class 的条件中,有一条是

类不包含任何类内初始化器(in-class initializer)。

在题主的第二个例子类的定义中,成员ab都使用了 in-class initializer,所以不是 aggregate class,所以不能使用

NoDefault y = {2, 2};

的方式初始化。

注:根据 aggregate initialization 所述,这一条件在C++17中将被删去。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート