定数データメンバを含むクラスに対してデフォルトのコンストラクタがコンパイラによって追加されないのはなぜですか? 私は定数データメンバ 'a'を宣言しており、クラス 'ClassA'のオブジェクトを作成しようとしているときにNo Appropriate Defaultコンストラクタが利用可能であるという点で、以下のコードを参照してください。助けてください。constデータメンバを含むクラスにデフォルトのコンストラクタが存在しない理由
#include "stdafx.h"
#include <iostream>
using namespace std;
class ClassA
{
private:
const int a;
public :
void print()
{
cout << "hello world" << endl;
}
};
int main()
{
ClassA obj;
obj.print();
return 0;
}
'a'を初期化する必要があります。 – chris
他にもコメントがあるにもかかわらず、 'a'の明白な初期化は、デフォルトの初期化子、すなわちint()であり、これはゼロで初期化されます。はい、これは(ほとんど)無意味ですが、デフォルトのコンストラクタでは不可能な理由について誰かが参考にしていますか? – Keith
@Keithそれは単なる言語の選択です。組み込みのデータメンバーは、デフォルトでは初期化されません。 – juanchopanza