C++学习笔记--虚函数的使用
2013-07-11 13:35
344 查看
虚函数系C++多态性的关键!
先来点直观的定义 虚函数:用Virtual声明的方法(成员函数)。 多态性:采用迟绑定技术,就是编译的时候未确定调用哪个函数,运行时候依据对象的类型确认。
这里牵涉到多态性的编译原理和RTTI的细节,不展开。
//my.h
注意到指针一直都是基类Student的,而且,引用函数的语句完全一样的。输出结果为:
Student
HighStudent
CollegeStudent
-----------------------------------------------------------没错,我就是分割线!-----------------------------------------------------------------------------------------------------
为了不至于每个派生类都加virtual,只需在基类的成员函数加上virtual,这样生成的派生类如果有同名函数,则自动为虚函数.
C++虚函数的时候关键点:确认对象的类型,就能确认调用的是基类或是派生类的成员函数了.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
虚函数还有一个和重要的行为方式。以下摘自《深入浅出MFC》
程序代码如下:
结果:
这个例子说明了调用虚函数的巧妙,需要好好回味以下。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
本来第二个行为模式也想自己写出来的,奈何学艺不精,脑海知道是怎么回事,但是却不可以很清晰很有条理地阐述出来。只能说明还未有完全建立知识体系。加油,如果你感到辛苦困难,可能是因为你在上坡路上。共勉!
参考资料:《C++ Prime Plus 中文版》第五版 、《深入浅出MFC》
先来点直观的定义 虚函数:用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》
相关文章推荐
- C++ 学习笔记(2) 虚函数的使用 virtual
- C++/GDI+ 学习笔记(一)——安装、配置&使用
- [学习笔记][C++Primer Plus]使用cout格式化输出字符串
- C++学习笔记(十四)多态原理与虚函数
- c++学习笔记:使用锋利的sstringstream完成类型转换
- C++ 使用头文件 - 学习笔记(6)
- C++学习笔记(第11章->使用类)
- C++友元函数的使用学习笔记
- [学习笔记][C++Primer Plus]使用cout格式化输出字符串,3q xuzhong
- 学习笔记---C++虚函数,纯虚函数
- c++新手学习笔记之多态性和虚函数(1)
- 智能指针auto_prt的使用(c++学习笔记)
- C++学习笔记_对话框使用技巧
- C++PrimerPlus第十一章学习笔记——使用类
- C++ 学习笔记(15)面向对象程序设计(类、继承、虚函数、抽象类、using命令、容器与继承)
- C++学习笔记(2) 顺序容器的使用
- 【C++学习笔记】12_指针的定义与使用
- C++学习笔记之---namespace的使用
- C++学习笔记(六):关于ifdef 和ifndef的使用
- C++学习笔记七之使用数组区间的函数