私の研究では、ユーザーがクラスのデフォルト コンストラクターを呼び出せないようにしたい場合は、それを非公開にできることを学びました。
class Person
{
public:
Person(const Person&);
~Person();
private:
Person(); //Any call to this will cause a compiler error.
};
私が理解していないのは、クラスの初期化されていない配列を作成すると、それがプライベートであるという構文エラーが表示されることです:
Person * ptr; //Works just fine.
Person arr[1]; //Syntax error: 'Person::Person()' is private
これにより、配列の作成時にデフォルトのコンストラクターを呼び出そうとしていると思われます。しかし、実際には実際のオブジェクトを作成していないので、これは私には意味がありません。