欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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说明

相关标签: 虚函数