- 981 名前:デフォルトの名無しさん mailto:sage [2010/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()などで定義したほうがいいのではないでようか? 同じ名前で別の機能を持たせる意味が分からないのですが、どのような時に使用 するものなのでしょうか? 継承したプログラマがこの関数名はこの機能を持たせたいとか、そういったレベル で同じ名前にしているのか?と思っているのですが。
|

|