C++マルチステートゼロからのQ&A

1776 ワード

Q 0:C++マルチステートとは?A 0:ええ...文字通り、いろいろな状態の性質があるのでしょう.Q 1:どんな状態についてですか.A 1:関数の複数の状態について.Q 2:なぜ多態(多態の目的や役割は何ですか)を使うのですか.A 2:一つの操作(一つの関数)に異なる状態での意味を与え、一つの関数(インタフェース)、多種の実現.Q 3:状態別とは?A 3:異なる状態は同類ではなく、異なる宿主と理解することができ、例えばAがこの操作をし、Bもこの操作をしなければならない.AとBはこの操作の宿主であり、彼らは異なるクラスであり、同じ操作を実行しなければならないが、異なるクラスでは、この操作の意味は異なる.Q 4:どんな場面で多形を使うのでしょうか?A 4:ベースクラスと派生クラスでは、ベースクラスと派生クラス(1つのベースクラスから1つ以上の派生クラスを派生するか、派生クラスから複数の派生クラスを派生するか)のどちらも1つの操作(関数)を使用するマルチステートが使用されます.Q 5:では、どのように多態を実現しますか.A 5:ダミー関数で実現する.すなわち、ベースクラス関数宣言の前にvirtualキーワードを付ける.Q 6:じゃ、追加しないとどうなりますか.A 6:加算しないと、虚関数==ではありません.また、加算しない場合、1つのベースクラスポインタは、どの派生クラスで初期化されても、この操作を呼び出すと、自分(つまりベースクラス)のこの操作しか呼び出されません.
public class Fruit(){
public:
       void print_self("I am fruit.");
};//     virtual    
class Apple Derived:public Fruit{
public:
        void print_self();
};
void Fruit::print_self(){
         std::cout<

Q 7:純虚関数という言葉を聞いたことがありますが、それは何ですか.A 7:純虚関数とは、私のベースクラスのある関数が根本的に実現しない(実現できない.そうしないと純虚関数とは呼ばない).このように書きます.
virtual print_self()=0;//    ,       ,     

追加すると、派生クラス関連関数の前にも追加しても大丈夫ですが、虚関数には、ベースクラスが虚と定義されている限り、そのすべての派生クラスまたは派生クラスの派生クラス先関関数が虚であるため、追加しなくてもよいという特徴があります.
Q 8:普通の関数だけで、私は実現しないで、どうしてわざわざ言って、また1つの純虚関数の名詞を定義して、どうして純虚関数がありますか?A 8:まず、関数を定義した場合、実装する必要があります.そうしないと、コンパイラがエラーを報告します.次に、動物類、果物類という非常に抽象的な類を定義すると、これは一般的に具体的なことをしません.例えば、動物という総称は具体的で適切な操作を与えるのは難しいが、動物たちはそれぞれの動物ができることを具体的にしている.私たちはこのような具体的なことを具象と呼んでいる.動物という全体的な概念を抽象と呼んでいる.では、私たちはこの抽象的な類が何もしない以上、そのこの方法は実際には実現する必要はありません.同時に、コンパイルが通過しないことを防止するために、純粋な虚関数のメカニズムを手配しました.このように、サブクラスが呼び出すことができる操作を定義しました.抽象的なクラスでは、実現する必要はありません(実際には、抽象的なクラスに操作を押し付けるのは難しいです).このような純虚関数を含むクラス(1つでも)を抽象クラスと呼ぶ.TBC--------------------------------------Q 9:虚析構関数Q 10:クラスライブラリ階層設計Q 11:具体的なメカニズムの実現、虚表虚ポインタなど