C++:多態と純虚関数、虚関数

1265 ワード

質問参考:1.マルチステートとは?なぜ多態を使うのですか.何のメリットがありますか?多態はどこで使いますか.--https://www.cnblogs.com/hai-ping/articles/2807750.html
                       2.虚関数と純虚関数の違い--https://blog.csdn.net/hackbuteer1/article/details/7558868
本文の初志は分かち合うためではなくて、主に自己学習のためです
オブジェクト向けの3つのプロパティ:継承、カプセル化、マルチステート
一、多態といえば、多態とは何かを理解しなければならない.
言語文法とはそれぞれ特色があり、多態の定義は大同小異である.
同じ操作が異なるオブジェクトに作用し、異なる解釈があり、異なる実行結果を生成することができる.これが多態性である.簡単に言えば、上位ファジイ概念を参照することで、特定のサブクラスのオブジェクトを指すことができる.(ここでは上位ファジイ概念の言葉を用い,c++実装多態はベースクラス,javaは抽象クラスを用いることに注意する)
二、どうして多態なの?
1.デカップリング
2.多重化の向上
3.拡張性の向上メンテナンス
三、多態度をどう使うか.
C++ベースクラスでメソッドAが定義され、各派生クラスにはベースクラスAメソッドの独立した実装があり、これがマルチステートの一般的な応用である.
 
虚関数純虚関数
一、虚関数とは何か、純虚関数とは何か.
両方の理解:
1.C++の2つの構文定義
2.virtualキーワードを使用するのは虚関数であり、関数宣言時=0メソッドエンティティがないのは純虚関数である
eg.
virtual int area(){a=0 return 0};   

virtual int area() = 0;    

二、なぜこの二つの概念があるのか.
マルチステートをよりよく実現するために.Javaと違って、c++は本当の意味でインタフェースの概念がなくて、それではどのようにインタフェースの機能を実現しますか、純虚関数
派生クラスでより拡張したいが、ベースクラス関数に実際の意味を与えたくない(javaインタフェースのような)
三、どのように使いますか.
以上の2点をまとめる
四、クラス比java
虚関数機能はjavaのabstract抽象クラスに似ています
純虚関数機能はjavaのinterfaceインタフェースに似ています
c++におけるインタフェースの概念(すなわちc++の抽象クラス)は純粋な虚関数によって実現されることを強調する.