当前位置: 首页 > news >正文

自己网站服务器甘肃省崇信县门户网

自己网站服务器,甘肃省崇信县门户网,网站footer设计,汉川做网站什么是虚函数 在类的定义中#xff0c;前面有 virtual 关键字的成员函数称为虚函数#xff1b;virtual 关键字只用在类定义里的函数声明中#xff0c;写函数体时不用。 class Base {virtual int Fun() ; // 虚函数 };int Base::Fun() // virtual 字段不用在函数体时定义 …什么是虚函数 在类的定义中前面有 virtual 关键字的成员函数称为虚函数virtual 关键字只用在类定义里的函数声明中写函数体时不用。 class Base {virtual int Fun() ; // 虚函数 };int Base::Fun() // virtual 字段不用在函数体时定义 { } 多态实现一 「派生类的指针」可以赋给「基类指针」通过基类指针调用基类和派生类中的同名「虚函数」时: 若该指针指向一个基类的对象那么被调用是 基类的虚函数若该指针指向一个派生类的对象那么被调用 的是派生类的虚函数。 这种机制就叫做“多态”说白点就是调用哪个虚函数取决于指针对象指向哪种类型的对象。 // 基类 class CFather { public:virtual void Fun() { } // 虚函数 };// 派生类 class CSon : public CFather { public :virtual void Fun() { } };int main() {CSon son;CFather *p son;p-Fun(); //调用哪个虚函数取决于 p 指向哪种类型的对象return 0; } 多态实现二 派生类的对象可以赋给基类「引用」通过基类引用调用基类和派生类中的同名「虚函数」时: 若该引用引用的是一个基类的对象那么被调 用是基类的虚函数若该引用引用的是一个派生类的对象那么被 调用的是派生类的虚函数。 这种机制也叫做“多态”说白点就是调用哪个虚函数取决于引用的对象是哪种类型的对象。 // 基类 class CFather { public:virtual void Fun() { } // 虚函数 };// 派生类 class CSon : public CFather { public :virtual void Fun() { } };int main() {CSon son;CFather r son;r.Fun(); //调用哪个虚函数取决于 r 引用哪种类型的对象return 0; } } 示例一 class A { public :virtual void Print() { cout A::Printendl ; } };// 继承A类 class B: public A { public :virtual void Print() { cout B::Print endl; } };// 继承A类 class D: public A { public:virtual void Print() { cout D::Print endl ; } };// 继承B类 class E: public B {virtual void Print() { cout E::Print endl ; } }; int main() {A a; B b; E e; D d;A * pa a; B * pb b;D * pd d; E * pe e;pa-Print(); // a.Print()被调用输出A::Printpa pb;pa - Print(); // b.Print()被调用输出B::Printpa pd;pa - Print(); // d.Print()被调用输出D::Printpa pe;pa - Print(); // e.Print()被调用输出E::Printreturn 0; } 示例二 class Base { public:void fun1() { fun2(); }virtual void fun2() // 虚函数{ cout Base::fun2() endl; } };class Derived : public Base { public:virtual void fun2() // 虚函数{ cout Derived:fun2() endl; } };int main() {Derived d;Base * pBase d;pBase-fun1();return 0; } 代码修改 class Base { public:void fun1() { this-fun2(); // this是基类指针fun2是虚函数所以是多态} }总结  这里代码迷惑人之处在于Derived 有Base的fun1接口调用了fun1不像平常的调用重写的虚方法。 this 指针的作用就是指向成员函数所作用的对象 所以非静态成员函数中可以直接使用 this 来代表指向该函数作用的对象的指针。 pBase 指针对象指向的是派生类对象派生类里没有 fun1 成员函数所以就会调用基类的 fun1 成员函数在Base::fun1() 成员函数体里执行 this-fun2() 时实际上指向的是派生类对象的 fun2 成员函数。 因此在非构造函数非析构函数的成员函数中调用「虚函数」就是多态实现!!! 另外在构造函数和析构函数中调用「虚函数」不是多态。编译时即可确定调用的函数是自己的类或基类中定义的函数不会等到运行时才决定调用自己的还是派生类的函数。
http://www.pierceye.com/news/431023/

相关文章:

  • 怎么看一个网站做的好不好北京企业网站推广
  • 网站后台访问权限设置静宁网站建设
  • 网站是什么时候开始的怎样做知道网站
  • 安丘做网站的有那个网站
  • 网站建设佰首选金手指六门户网站 解决方案
  • 怎么可以创建网站十大管理培训课程
  • 网络安全管理系统佛山厂家推广优化
  • 网站建设 外包是什么意思微信小程序低代码开发
  • 网站底部信息用js写法莱芜雪野湖有什么好玩的
  • 青岛高品质网站制作优化快速排名教程
  • 地产项目网站长沙建个网站一般需要多少钱
  • 什么样的网站流量容易做社区网站建设
  • 网站的虚拟主机到期延吉建设局网站
  • 深圳seo网站优化公司wordpress页面权限插件
  • 手机制作购物网站农业 网站源码
  • 飞沐网站设计成都推广网站多少钱
  • 网站建设需要什么手续秦皇岛市房价
  • seo织梦网站建设步骤西宁网络公司电话
  • 河南省建设厅网站 吴浩石家庄做外贸网站建设
  • 免费网站发布怎么做的校园网站建设的参考文献
  • 网站空间管理平台腾讯会议多少钱一个月
  • 手机网站开发如何设置触摸功能的网页设计培训班
  • 淘宝客自己做网站中信建设有限责任公司 闫励
  • wordpress 分页不出来昆明网站快速优化排名
  • 玉泉路网站制作369网站建设中心
  • 服务器建设网站办一家建筑公司怎么样
  • 官网网站设计小程序免费制作流程
  • 宜昌哪有有做网站的wordpress如何添加页面子目录
  • 高端网站制作开发html写一个简单购物页面
  • 为什么百度搜索不到我的网站网站服务商排名