class A { public: int id = 0; }; class B : public A { public: B() : id(100) {} };
これエラーになる。この辺よくわかってなかった。
hoge.cpp: In constructor ‘B::B()’: hoge.cpp:7:9: error: class ‘B’ does not have any field named ‘id’ B() : id(100) {} ^
B() : id(100) {}
はダメなのでB() { id = 100 }
でOKだった。よく分からんね。
本題はここから。以下のようなプログラムはA
と出力する。
#include <iostream> class A { public: std::string s = "A"; A(); virtual ~A(); }; A::A(){} A::~A(){} class B : public A { public: std::string s = "B"; B() : s("hoge") {} ~B() override = default; }; int main () { A a = B(); std::cout << a.s; return 0; }
気づくのに1時間くらいかかってしまった。