菜鸟学编程-一个自学入门网站菜鸟学编程-一个自学入门网站菜鸟学编程-一个自学入门网站

VS用C重新定义简单虚拟关键字的使用++

问题描述:

我知道virtual功能在基类中声明,可以是(不必是除非它是一个纯虚函数)精制在派生类中。不过,我不明白,重新定义一个虚函数和重新定义一个普通函数之间的差异。望着这个例子的代码:


class base {

public:

 virtual int getAge(){

  return 20;

 }

 int getId(){

  return 11111;

 }

};


class dri : public base{

public:

 int getAge(){

  return 30;

 }

 int getId(){

  return 222222;

 }

};


int main(){

 dri d;

 std:: cout << d.getAge() << std::endl;

 std:: cout << d.getId() << std::endl;

 return 0;

}

将输出:


30

222222

其中具有情况下,virtual关键词有没有任何区别。这两个功能被改写。那么,为什么需要它?

解决答案:

你没有给你的类成员函数的调用的例子。我猜你写下面的代码:


dri sth;

cout << sth.getAge() << endl;

cout << sth.getId() << endl;

但是,请注意,C ++的动态绑定和多态当实例指针或引用,这实际上意味着你应该这样做,让您的理想输出只能应用于:


base *sth = new dri();

cout << sth->getAge() << endl;

cout << sth->getId() << endl;


未经允许不得转载:菜鸟学编程-一个自学入门网站 » VS用C重新定义简单虚拟关键字的使用++