新・明解 C++で学ぶオブジェクト指向プログラミング 第5章 継承

新・明解C++で学ぶオブジェクト指向プログラミング

柴田 望洋 SBクリエイティブ 2018年09月18日頃
売り上げランキング :

by ヨメレバ

第5章 継承

*クラスメンバ初期化例

class Member {
std::string full_name;

Member( const std::string& name, int no, double w)
: full_name(name), number(no)
{

}
}

int main()
{
Member kaneko("金子健太", 15, 75.2);

}

*同一あるいは類似したクラスを、仕様の異なる別のクラスとして実現すると、プログラムのあちこちに”似て非なる”クラスが溢れかえってしまい、プログラムの開発効率・保守性が低下する。

*クラスの派生において、コンストラクタとデストラクタは継承されない。

*派生クラスのコンストラクタ例:

Derived( int aa, int bb, int xx) : Base(aa, bb), x(xx){}

 

*スライシング:ベースクラスオブジェクトにたいし、派生クラスオブジェクトを代入できる。
逆向きの代入はできずコンパイルエラーとなる。

*クラスオブジェクトの参照

void slim_off( Member& m, double dw)
{
double weight = m.get_weight();
if( weight > dw)
m.set_weight(weight - dw);
}

main
Member kaneko("金子健太”、15, 75.2 );
slim_off(kaneko, 3.7);
VipMember mineya("峰屋隆二", 17, 89.2 );
slim_off(mineya, 15.3);

*派生クラス型のポインタや参照は、ベースクラス型オブジェクトを指したり参照できない。

感想)

将来的に継承されることを想定した、綺麗なベースクラスを作るのって意外と難しいかも。結局ベースクラスも修正するなんてことになってしまいそうな。。。

タイトルとURLをコピーしました