虚函数
在类的定义中,前面有 virtual 关键字的成员函数就是虚函数。
例如:
class base {
virtual int get() ;
};
int base::get()
{
}
virtual 关键字只用在类定义里的函数声明中, 写函数体时不用。
多态的表现形式一
派生类的指针可以赋给基类指针。
通过基类指针调用基类和派生类中的同名虚函数时:
(1)若该指针指向一个基类的对象,那么被调用是 基类的虚函数;
(2)若该指针指向一个派生类的对象,那么被调用 的是派生类的虚函数。
这种机制就叫做“多态”。
例如:
class CBase {
public:
virtual void SomeVirtualFunction() {
}
};
class CDerived:public CBase {
public :
virtual void SomeVirtualFunction() {
}
};
int main() {
CDerived ODerived;
CBase * p = & ODerived;
p -> SomeVirtualFunction(); //调用哪个虚函数取决于p指向哪种类型的对象
return 0;
}
多态的表现形式二
派生类的对象可以赋给基类引用
通过基类引用调用基类和派生类中的同名虚函数时:
(1)若该引用引用的是一个基类的对象,那么被调 用是基类的虚函数;
(2)若该引用引用的是一个派生类的对象,那么被调用的是派生类的虚函数。
这种机制也叫做“多态”。
例如:
class CBase {
public:
virtual void SomeVirtualFunction() {
}
};
class CDerived:public CBase {
public :
virtual void SomeVirtualFunction() {
}
};
int