【问题标题】:method overriding virtual or not方法是否覆盖虚拟
【发布时间】:2012-10-26 16:32:46
【问题描述】:

有什么区别:

一)

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 有人会说,b在模板中使用时可以称为静态多态...
    【解决方案2】:

    第一个是overidding,第二个是方法隐藏

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-24
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 2014-03-18
      • 2013-01-15
      • 1970-01-01
      相关资源
      最近更新 更多