0

違いは何ですか:

a)

class base{
   int a;
public:
   virtual int function();
}; 
class derived : public base{
   int b;
public:
   int function();
};

b)

class base{
   int a;
public:
   int function();
};    
class derived : public base{
   int b;
public:
   int function();
};

なぜ (a) を使用し、なぜ (b) を使用するのですか?

(b) はポリモーフィズムの一種ですか?

4

2 に答える 2

3

a) 基本クラスのメソッドをオーバーライドします。b) 隠します。b) ポリモーフィズムではありません。

ここに便利なリンクがあります: The Definitive C++ Book Guide and List

于 2012-11-06T17:03:22.110 に答える
1

1 つ目はオーバーライドで、2 つ目はメソッドの隠蔽です。

First は動的ディスパッチと動的ポリモーフィズムに使用されます。つまり、実行時にオブジェクトの実際のタイプに応じて適切なメソッドを呼び出す。

2 番目は、メソッドの隠蔽に使用されます。
よく読んでください:
警告: Derived::f(char) hides Base::f(double)? の意味は何ですか?

于 2012-11-06T17:03:15.057 に答える