C++ でデフォルト コンストラクタの本体を使用できますか?
ありがとう。
はい、もちろんできます。引数を必要としないコンストラクターは、既定のコンストラクターです。
デフォルトのコンストラクターを明示的に指定する必要はありません。ただし、先に進んで明示的に実装することをお勧めします。これにより、デフォルトの動作が本当に必要なものであることに依存しなくなります。
パブリックのデフォルト コンストラクターを実装する場合は、たとえそれが空であっても、必ず本体が必要です。
場合によっては、保護されたまたはプライベートな ctor を使用しても問題ありません。ctor が private (隠しコンストラクターと呼ばれる) の場合、ctor は private であり、関数本体がなくても問題ありません。これは、呼び出すことができないためです。
はい、デフォルトのコンストラクター (つまり、パラメーターのないコンストラクター) は、他のコンストラクターと同様に本体を持つことができます。これは、「デフォルト」の初期化コードを配置するのに適した場所です。メンバー変数を適切な値に設定します。おそらく、ポインタを null に設定するか、コンポーネント オブジェクトを割り当てます。
おそらく「デフォルト」という言葉が混乱の原因ではないでしょうか? 特定のパラメーターなしで呼び出されるという点ではデフォルトであり、定義がない場合は必ずしもデフォルトではありません。
コンストラクターは、クラスのメンバーを初期化するために使用されます。したがって、確かにどのコンストラクターも本体を持つことができます。自分自身にコンストラクターを提供することで、デフォルトのコンストラクターを超えているだけです。
class foo
{
int x ;
public:
foo() // default constructor
{
x=10; // How ever you can achieve this with initializer lists too.
}
};