[解決済み] ベースクラスのコンストラクタを呼び出す際のルールは?
2022-03-19 01:10:36
質問
派生クラスから基底クラスのコンストラクタを呼び出す場合のC++のルールは何ですか?
例えば、Javaでは、サブクラスのコンストラクタの1行目に記述しなければなりません(記述しない場合は、引数のないスーパーコンストラクタへの暗黙の呼び出しと見なされ、それがない場合はコンパイルエラーになります)。
解決するには?
基底クラスのコンストラクタは、引数がない場合、自動的に呼び出されます。 スーパークラスのコンストラクタを引数付きで呼び出したい場合は、サブクラスのコンストラクタ初期化リストを使用する必要があります。 Java と異なり、C++ は多重継承をサポートしているので(良くも悪くも)、ベースクラスは "super()" ではなく、名前で参照する必要があります。
class SuperClass
{
public:
SuperClass(int foo)
{
// do something with foo
}
};
class SubClass : public SuperClass
{
public:
SubClass(int foo, int bar)
: SuperClass(foo) // Call the superclass constructor in the subclass' initialization list.
{
// do something with bar
}
};
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー