当前位置: 首页 > 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.zqtcl.cn/news/431023/

相关文章:

  • 携程网站建设的基本特点哈尔滨做平台网站平台公司
  • 网站建设入门解读国模 wordpress
  • 网站购物车js代码怎么做制作app的软件有哪些
  • 36氪网站用什么程序做的互联网门户网站建设
  • 视频聚合网站怎么做不侵权wordpress 管理员插件
  • 传媒网站后台免费模板网站建设的进度计划
  • 如何做网站排名合肥全网优化
  • 网站建设招聘信息官网 wordpress
  • 城阳网站开发公司网页制作与设计在哪搜题
  • 做网站算运营吗grace wordpress
  • 厦门建设网站建站制作网页动画的软件
  • 百度提交网站收录入口郑州网站app开发
  • 自己的身份已经网站备案了品牌建设目标包括哪些方面
  • 中国免费网站服务器下载保定网站制作系统
  • 深圳app网站设计数据库网站建设公司
  • 手机网站程序下载做地方黄页网站
  • 网站开发时如何设计英文版本专业vi机构
  • 黄骅市人事考试网电商网站怎样优化
  • 可信网站认证必须做吧陕西做网站的
  • 网站怎么静态化wordpress视频安装教程
  • 合浦县建设局网站网站备案号如何查询
  • 网站跳转代码 html亚马逊使用wordpress做的
  • 做哪一类的网站可以短时间变现东莞大朗网站设计
  • 框架网站模板建设淘宝客网站.lc和ev
  • 驻马店做网站推广涞源县住房和城乡建设局网站
  • 国外seo大神如何做网站 seo
  • 网站建设外文版要求昆山网站建设怎么样
  • 合肥知名网站制作网站建设宣传的目的
  • 曲阜做网站哪家好asp.net网站打不开html页面
  • 品牌网站开发普通人做电商赚钱吗