虚函数的必要性?

来源:百度知道 编辑:UC知道 时间:2024/09/28 07:52:52
#include <iostream>

using std::cout;
using std::endl;

class Shape{

public:
function1(){
cout << "This is call Shape's function1!" << endl; //这里并没有用虚函数,所以不能实现多态
}

virtual function2(){
cout << "This is call virtual function2 of Shape class!" << endl; //这里用了虚拟函数,所以可以实现多态
}

};

class Rect: public Shape{

public:
function1(){
cout << "This is call Rect's function1!" << endl; //不能实现多态
}

virtual function2(){
cout << "This is call virtual function2 of Rect class!" << endl; //实现多态
}

};

class Circle: public Shape{

public:
function1(){
cout << "This is call Circle's function1!" << endl; //不能实现多态
}

virtual function2(){
cout << "This

如果你做一个画图板的程序,上面有各种的图形,,用一个父类的指针向量保存所有的图形,在要输出它们时只要调用一下你的draw函数,就会根据对象的不同做不同的动作.
没有虚函数,你会怎么做?
很简单的一个例子

像你写的这样简单的例子,用虚函数实现多态,父类指针来调用子类对象的方法,确实是没必要费那事。

举一个小小的例子:
假如你写一个函数,这个函数的参数只是父类的指针类型,你是不是想传一个子类对象的地址,并且想调用子类的方法。

很多时候我们用的是父类的指针。
例如遍历、查找等操作,你不想因为要调用子类的方法而去一一的定义所有子类的指针吧,你是不是因为这个多态而感到兴奋,并且很舒服的使用。