C++ 虚函数
程序员文章站
2024-03-21 12:01:40
...
? C++规定动态联编是在虚函数的支持下实现
的
? 虚函数是动态联编的基础。虚函数是非
static的成员函数
? 说明虚函数的方法如下:
virtual <类型说明符><函数名>(<参数表>);
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
class Point{
private:
double x, y;
public:
Point(double i, double j){
x = i;
y = j;
}
/* virtual*/ double Area() const{
return 0.0;
}
virtual ~Point(){}
};
class Rectangle:public Point{
private:
double w, h;
public:
Rectangle(double i,double j,double k,double l);
virtual double Area() const{
return w * h;
}
};
Rectangle::Rectangle(double i,double j,double k,double l):Point(i, j){
w = k;
h = l;
}
void fun(Point &s){
cout<<s.Area()<<endl;
}
int main(){
Rectangle rec(3.0,5.2,15.0,25.0);
fun(rec);
return 0;
}
虚函数替换的条件
? 从上面的例子可以看到,派生类中对基类的
虚函数进行替换时,要求两者满足如下条件:
• 与基类虚函数有相同的参数个数
• 其参数的类型与基类的虚函数的对应的参数类
型相同
• 其返回值与基类函数的相同
? 满足上述条件的派生类成员函数,自然是虚
函数,可以不必加virtual说明
上一篇: 虚函数用法总结
下一篇: Java中的静态绑定与动态绑定事例