虚函数 纯虚函数的用法

虚函数是指一个类中你希望重载的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际调用的是继承类的版本。  下面是一个实例:

#i nclude "stdio.h"
#i nclude "conio.h"
class Parent
{
public:
    char data[20];
    void Function1();
    virtual void Function2(); // 这里声明Function2是虚函数
}parent;
 
void Parent::Function1()
{
    printf("This is parent,function1/n");
}

void Parent::Function2()
{
    printf("This is parent,function2/n");
}

class Child:public Parent
{
void Function1();
void Function2();
} child;

void Child::Function1()
{
printf("This is child,function1/n");
}

void Child::Function2()
{
printf("This is child,function2/n");
}

int main(int argc, char* argv[])
{
Parent *p; // 定义一个基类指针
if(_getch()=='c') // 如果输入一个小写字母c
p=&child; // 指向继承类对象
else
p=&parent; // 否则指向基类对象
p->Function1(); // 这里在编译时会直接给出Parent::Function1()的入口地址。
p->Function2(); // 注意这里,执行的是哪一个Function2?
return 0;
}

当我们输入小写字母C时,输出为:

This is parent,function1
This is child,function2

这里虽然parent类的指针调用的是Child类的对象,但非虚函数指针采用的是编译时赋值,而编译时parent并不知道实际指向哪个类(直到运行时才知道),所以它只能将parent类的函数的地址赋给指针.但虚函数采用的是动态联编,它可以在运行时判断指针指向的对象,并自动调用函数的函数.

故当我们输入其他字母时,输出为:

This is parent,function1
This is parent,function2

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值