覆盖虚拟或不覆盖的方法

时间:2012-11-06 17:02:21

标签: c++ inheritance polymorphism override virtual-functions

有什么区别:

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)是一种多态吗?

2 个答案:

答案 0 :(得分:3)

a)覆盖基类中的方法。 b)隐藏它。 b)不是多态性。

这是一个有用的链接:The Definitive C++ Book Guide and List

答案 1 :(得分:1)

首先是覆盖,第二种是方法隐藏

首先用于动态调度和动态多态。即:在运行时根据对象的实际类型调用适当的方法。

第二个用于方法隐藏 好读:
What's the meaning of, Warning: Derived::f(char) hides Base::f(double)?