10/05/20 16:20:56
只今C++の勉強中で
クラスの継承と一緒にメンバ関数のオーバーライドが出来るとあるのですが、
これを使う意味ってあるのでしょうか?
class ctest{
int m;
char *p;
public:
virtual int put(char *); //pに文字列を入れる関数
}
class stestSub : public ctest{
public:
int put(char *); //pに文字列を入れる関数(全て小文字に変換)
}
ctest s1;
s1.put("ABced");
stestSub s2;
s2.put("zxcVB");
以上のように定義してしまうと、s2からメインクラスのputを使う事が出来なくなるし、
別名でサブクラスに新たにput2()などで定義したほうがいいのではないでようか?
同じ名前で別の機能を持たせる意味が分からないのですが、どのような時に使用
するものなのでしょうか?
継承したプログラマがこの関数名はこの機能を持たせたいとか、そういったレベル
で同じ名前にしているのか?と思っているのですが。