C++虚函数的工程应用2

来源:互联网 发布:数据清洗的方法不包括 编辑:程序博客网 时间:2024/06/15 06:11
#include <iostream>using namespace std;class CObject{public:void MyIsKindOf(){Show();}virtual void Show(){cout << "class CObject" << endl;}};class Ckilyc : public CObject{public:virtual void Show(){cout << "class Ckilyc" <<endl;}};class CPanPan : public CObject{public:virtual void Show(){cout << "class Cpanpan" << endl;}};class CSmallKilyc : public Ckilyc{public:virtual void Show(){cout << "class SmallKilyc" << endl;}};// 1. MyIsKindOf 方法被所有的类继承了下去// 2. MyIsKindOf 里面调用了虚函数// 3. 正是因为在 MyIsKindOf 调用了虚函数 Show 所以会呈现成来多肽 int main(){CObject object;Ckilyc kilyc;CPanPan panpan;CSmallKilyc smallkilyc;object.MyIsKindOf();kilyc.MyIsKindOf();panpan.MyIsKindOf();smallkilyc.MyIsKindOf();return 0;}/*object.MyIsKindOf();编译器会编译为 MyIsKindOf(CObject * this) // 这里有一个参数 来参与赋值兼容性 赋值之后 就可以让虚函数上马了。MyIsKindOf(CObject * this){this->Show();}当调用 kilyc.MyIsKindOf(); 时,编译器会这样处理MyIsKindOf(&kilyc){(&kilyc)->Show();}而Show是一个虚函数,虚函数表里面弄存放的是Ckilyc::Show()函数指针 */

这种C++语法的使用在MFC中非常重要,一个就是可以实现给用户留一个接口,一个就是管理代码的时候比较方便。


 

0 0
原创粉丝点击