C++学习笔记--虚函数的使用

本文通过实例讲解了C++中虚函数的概念及如何实现多态性。通过一个包含基类Student与派生类HighStudent、CollegeStudent的例子,展示了如何通过虚函数实现运行时多态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虚函数系C++多态性的关键!

先来点直观的定义                虚函数:用Virtual声明的方法(成员函数)。           多态性:采用迟绑定技术,就是编译的时候未确定调用哪个函数,运行时候依据对象的类型确认。

这里牵涉到多态性的编译原理和RTTI的细节,不展开。

//my.h

class Student
{
    void printStu { cout<<"Student"<<endl;}
}

class HighStudent:Public Student
{
    virtual void printStu {cout<<"HighStudent"<<endl;}
}

class CollegeStudent:Public Student
{
    virtual void printStu {cout<<"CollegeStudent"<<endl;}
}
//my.cpp

int main()
{
	Student student1;
	HighStudent highstudent2;
	CollegeStudent collegestudent3;

	Student *pStu;
	pStu->printStu();

	pStu=&highstudent2;
	pStu->printStu();

	pStu=&collegestudent3;
	pStu->printStu();
}

注意到指针一直都是基类Student的,而且,引用函数的语句完全一样的。输出结果为:

Student

HighStudent

CollegeStudent

-----------------------------------------------------------没错,我就是分割线!-----------------------------------------------------------------------------------------------------

为了不至于每个派生类都加virtual,只需在基类的成员函数加上virtual,这样生成的派生类如果有同名函数,则自动为虚函数.

C++虚函数的时候关键点:确认对象的类型,就能确认调用的是基类或是派生类的成员函数了.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

虚函数还有一个和重要的行为方式。以下摘自《深入浅出MFC》

程序代码如下:


结果:


这个例子说明了调用虚函数的巧妙,需要好好回味以下。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

本来第二个行为模式也想自己写出来的,奈何学艺不精,脑海知道是怎么回事,但是却不可以很清晰很有条理地阐述出来。只能说明还未有完全建立知识体系。加油,如果你感到辛苦困难,可能是因为你在上坡路上。共勉!

参考资料:《C++ Prime Plus 中文版》第五版 、《深入浅出MFC》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值