虚函数和多态
虚函数
在类的定义中,前面有 virtual 关键字的成员函数就是虚函数。
class base
{
virtual int get() ;
};
int base::get() {
}
virtual 关键字只用在类定义里的函数声明中,写函数体时不用
多态
多态的表现形式
一、
1、派生类的指针可以赋给基类指针。
2、通过基类指针调用基类和派生类中的同名虚函数时:
(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、通过基类引用调用基类和派生类中的同名虚函数时:
(1)若该引用引用的是一个基类的对象,那么被调用是基类的虚函数;
(2)若该引用引用的是一个派生类的对象,那么被调用的是派生类的虚函数。
这种机制也叫做“多态”。
class A
{
public :
virtual void Print( )
{
cout << "A::Print"<<endl ;
}
};
class B: public A
{
public :
virtual void Print( )
{
cout << "B::Print" <<endl;
}
};
class D: public A
{
public:
virtual void

本文详细介绍了C++中的虚函数和多态性,包括虚函数的概念、多态的表现形式和作用,以及在构造函数和析构函数中的应用。此外,还讨论了虚析构函数的重要性,纯虚函数和抽象类的特性,强调了抽象类只能作为基类使用且不能实例化。
最低0.47元/天 解锁文章
909

被折叠的 条评论
为什么被折叠?



