静的な型と動的な型の意味が知りたい。
オブジェクト指向で「静的な型と動的な型」という用語が出てきたのですが、説明を読んでもわかりません。参考書には以下のように書かれているのですが、"式"というところで引っ掛かり結果よくわからないまま参考書を読み進めていましたが理解している前提での説明が続いてその先の理解できないので別の説明をしてもらいたく質問しました。
静的な型
「静的な型 式の型、その式がもたらす結果の型として実行時の意味を考慮ぜずにプログラムを解析することで得られる。式の静的な型は、その式が位置するプログラムの形だけから決まり、プログラムの実行中に変わることがない。」
動的な型
「動的な型。左辺値式の表す左辺値が指す最派生オブジェクト型。(例) その静的な型がクラスBへのポインタであるポインタpがクラスBから派生したクラスDのオブジェクトを指していたとすると、式*pの動的な型はDとなる、参照も同様に扱う。右辺値式の動的な型は、それの静的な型とする。」
void put_member(const Member* m) {
cout << (m->get_weight() >= 65 ? "〇" : " ");
m->print();//ここです。
}
int main() {
Member m("mmm", 15, 75.2);
VipMember v("aaa", 17, 89.2, "会費全額免除");
SeniorMember s("sss",43,63.7,3);
put_member(&m);
put_member(&v);
put_member(&s);
_getch();
return 0;
}