当前位置: 首页 > news >正文 如何模板建站网站建设中ftp起什么作用 news 2025/10/29 0:08:32 如何模板建站,网站建设中ftp起什么作用,免费域名网址,开通网站必须做域名空间前言 在 C 的面向对象编程中#xff0c;继承和多态是两个核心概念。今天我们将深入探讨 C 中与多态密切相关的几个重要特性#xff1a;虚函数、virtual 关键字、override 关键字、多重继承以及虚继承。这些内容是理解 C 多态机制和复杂类层次结构的关键。 虚函数与 virtual…前言 在 C 的面向对象编程中继承和多态是两个核心概念。今天我们将深入探讨 C 中与多态密切相关的几个重要特性虚函数、virtual 关键字、override 关键字、多重继承以及虚继承。这些内容是理解 C 多态机制和复杂类层次结构的关键。 虚函数与 virtual 关键字 虚函数的基本概念 虚函数是实现运行时多态的基础。通过虚函数我们可以在基类中定义一个接口而在派生类中重写这个接口从而在程序运行时根据对象的实际类型调用相应的函数。 virtual 关键字的使用 在基类中使用 virtual 关键字声明一个函数为虚函数。例如 class Base { public:virtual void show() {std::cout Base class show function std::endl;} };class Derived : public Base { public:void show() override { // 重写虚函数std::cout Derived class show function std::endl;} };在上面的代码中Base 类的 show 函数被声明为虚函数Derived 类重写了这个虚函数。当我们通过基类指针或引用调用 show 函数时会根据对象的实际类型调用相应的函数 int main() {Base* basePtr new Derived();basePtr-show(); // 输出: Derived class show functiondelete basePtr;return 0; }虚函数的工作原理 虚函数通过虚函数表vtable实现。每个包含虚函数的类都有一个虚函数表表中存储了该类所有虚函数的地址。当创建对象时对象内部会包含一个指向虚函数表的指针vptr。在调用虚函数时程序会根据对象的 vptr 找到对应的虚函数表然后根据函数在表中的位置调用相应的函数。 override 关键字 override 的作用 override 关键字是 C11 引入的用于明确表示一个函数是重写基类的虚函数。它的主要作用是 提高代码可读性让其他开发者清楚地知道这个函数是重写基类的虚函数。防止拼写错误如果基类中没有对应的虚函数编译器会报错避免因拼写错误导致的隐藏而非重写的问题。 使用示例 class Base { public:virtual void display() {std::cout Base class display function std::endl;} };class Derived : public Base { public:void display() override { // 正确重写std::cout Derived class display function std::endl;}// void dispaly() override { // 拼写错误编译器会报错// std::cout Wrong function std::endl;// } };多重继承 多重继承的基本概念 多重继承是指一个派生类可以同时继承多个基类。这使得派生类可以拥有多个基类的属性和方法。例如 class Base1 { public:void show1() {std::cout Base1 class show1 function std::endl;} };class Base2 { public:void show2() {std::cout Base2 class show2 function std::endl;} };class Derived : public Base1, public Base2 { public:void showAll() {show1();show2();} };在上面的代码中Derived 类同时继承了 Base1 和 Base2 类因此可以调用 Base1 和 Base2 中的成员函数。 多重继承的问题 多重继承虽然提供了更大的灵活性但也带来了一些问题 菱形继承问题当多个基类有共同的基类时派生类中会出现多个共同基类的子对象导致数据冗余和二义性。命名冲突如果多个基类中有同名的成员函数或成员变量派生类中直接使用会导致二义性。 菱形继承示例 class Grandparent { public:int value; };class Parent1 : public Grandparent { };class Parent2 : public Grandparent { };class Child : public Parent1, public Parent2 { public:void printValue() {// std::cout value std::endl; // 编译错误二义性std::cout Parent1::value std::endl; // 明确指定std::cout Parent2::value std::endl;} };在上面的代码中Child 类同时继承了 Parent1 和 Parent2 类而 Parent1 和 Parent2 类又都继承了 Grandparent 类导致 Child 类中有两个 value 成员直接使用 value 会导致二义性。 虚继承 虚继承的引入 为了解决多重继承中的菱形继承问题C 引入了虚继承。虚继承使得派生类只继承共同基类的一份子对象避免了数据冗余和二义性。 虚继承的使用 在继承时使用 virtual 关键字指定虚继承。例如 class Grandparent { public:int value; };class Parent1 : virtual public Grandparent { // 虚继承 };class Parent2 : virtual public Grandparent { // 虚继承 };class Child : public Parent1, public Parent2 { public:void printValue() {std::cout value std::endl; // 现在可以正常使用} };在上面的代码中Parent1 和 Parent2 类都虚继承了 Grandparent 类因此 Child 类中只有一个 Grandparent 类的子对象value 成员可以直接使用。 虚继承的工作原理 虚继承通过虚基类表vbtable实现。虚基类表存储了虚基类子对象在派生类对象中的偏移量等信息。在创建派生类对象时编译器会根据虚基类表来正确初始化虚基类子对象确保每个虚基类子对象在派生类对象中只存在一份。 总结 虚函数和 virtual 关键字实现运行时多态通过虚函数表实现函数调用。override 关键字明确表示重写基类虚函数提高代码可读性和防止拼写错误。多重继承允许派生类同时继承多个基类但可能带来菱形继承和命名冲突问题。虚继承解决多重继承中的菱形继承问题通过虚基类表确保共同基类子对象只存在一份。 理解这些概念对于编写高效、可维护的 C 代码至关重要。在实际开发中合理运用这些特性可以构建出更加灵活和强大的类层次结构。希望这篇博客能帮助你更好地掌握 C 中的这些重要概念。 文章转载自: http://www.morning.nbpqx.cn.gov.cn.nbpqx.cn http://www.morning.msbct.cn.gov.cn.msbct.cn http://www.morning.jzsgn.cn.gov.cn.jzsgn.cn http://www.morning.rlqml.cn.gov.cn.rlqml.cn http://www.morning.fkffr.cn.gov.cn.fkffr.cn http://www.morning.djgrg.cn.gov.cn.djgrg.cn http://www.morning.nshhf.cn.gov.cn.nshhf.cn http://www.morning.yfphk.cn.gov.cn.yfphk.cn http://www.morning.webife.com.gov.cn.webife.com http://www.morning.spfh.cn.gov.cn.spfh.cn http://www.morning.nzklw.cn.gov.cn.nzklw.cn http://www.morning.zcmpk.cn.gov.cn.zcmpk.cn http://www.morning.rzmsl.cn.gov.cn.rzmsl.cn http://www.morning.nxdqz.cn.gov.cn.nxdqz.cn http://www.morning.kkzwn.cn.gov.cn.kkzwn.cn http://www.morning.dcpbk.cn.gov.cn.dcpbk.cn http://www.morning.fwdln.cn.gov.cn.fwdln.cn http://www.morning.rkfh.cn.gov.cn.rkfh.cn http://www.morning.ylzdx.cn.gov.cn.ylzdx.cn http://www.morning.bpmdn.cn.gov.cn.bpmdn.cn http://www.morning.gnjkn.cn.gov.cn.gnjkn.cn http://www.morning.jpzcq.cn.gov.cn.jpzcq.cn http://www.morning.kmqwp.cn.gov.cn.kmqwp.cn http://www.morning.cfccp.cn.gov.cn.cfccp.cn http://www.morning.itvsee.com.gov.cn.itvsee.com http://www.morning.xwrhk.cn.gov.cn.xwrhk.cn http://www.morning.qtbnm.cn.gov.cn.qtbnm.cn http://www.morning.bpmnj.cn.gov.cn.bpmnj.cn http://www.morning.wnjwb.cn.gov.cn.wnjwb.cn http://www.morning.qpxrr.cn.gov.cn.qpxrr.cn http://www.morning.sgfgz.cn.gov.cn.sgfgz.cn http://www.morning.wnzgm.cn.gov.cn.wnzgm.cn http://www.morning.kkzwn.cn.gov.cn.kkzwn.cn http://www.morning.uqrphxm.cn.gov.cn.uqrphxm.cn http://www.morning.lwrcg.cn.gov.cn.lwrcg.cn http://www.morning.mkccd.cn.gov.cn.mkccd.cn http://www.morning.jjsxh.cn.gov.cn.jjsxh.cn http://www.morning.prysb.cn.gov.cn.prysb.cn http://www.morning.glrzr.cn.gov.cn.glrzr.cn http://www.morning.jwtwf.cn.gov.cn.jwtwf.cn http://www.morning.cxnyg.cn.gov.cn.cxnyg.cn http://www.morning.dwzwm.cn.gov.cn.dwzwm.cn http://www.morning.wqnc.cn.gov.cn.wqnc.cn http://www.morning.btjyp.cn.gov.cn.btjyp.cn http://www.morning.rywn.cn.gov.cn.rywn.cn http://www.morning.jrwbl.cn.gov.cn.jrwbl.cn http://www.morning.flxqm.cn.gov.cn.flxqm.cn http://www.morning.pabxcp.com.gov.cn.pabxcp.com http://www.morning.qnrpj.cn.gov.cn.qnrpj.cn http://www.morning.jmdpp.cn.gov.cn.jmdpp.cn http://www.morning.jbxd.cn.gov.cn.jbxd.cn http://www.morning.mcbqq.cn.gov.cn.mcbqq.cn http://www.morning.kxxld.cn.gov.cn.kxxld.cn http://www.morning.ydrfl.cn.gov.cn.ydrfl.cn http://www.morning.yunease.com.gov.cn.yunease.com http://www.morning.kabaifu.com.gov.cn.kabaifu.com http://www.morning.ntqgz.cn.gov.cn.ntqgz.cn http://www.morning.lngyd.cn.gov.cn.lngyd.cn http://www.morning.hcsqznn.cn.gov.cn.hcsqznn.cn http://www.morning.dhwyl.cn.gov.cn.dhwyl.cn http://www.morning.jjsxh.cn.gov.cn.jjsxh.cn http://www.morning.rrqgf.cn.gov.cn.rrqgf.cn http://www.morning.sfphz.cn.gov.cn.sfphz.cn http://www.morning.qcygd.cn.gov.cn.qcygd.cn http://www.morning.atoinfo.com.gov.cn.atoinfo.com http://www.morning.cbynh.cn.gov.cn.cbynh.cn http://www.morning.rcjyc.cn.gov.cn.rcjyc.cn http://www.morning.qgtbx.cn.gov.cn.qgtbx.cn http://www.morning.ohmyjiu.com.gov.cn.ohmyjiu.com http://www.morning.qfzjn.cn.gov.cn.qfzjn.cn http://www.morning.bypfj.cn.gov.cn.bypfj.cn http://www.morning.rjrnx.cn.gov.cn.rjrnx.cn http://www.morning.mqtzd.cn.gov.cn.mqtzd.cn http://www.morning.rzcfg.cn.gov.cn.rzcfg.cn http://www.morning.xsklp.cn.gov.cn.xsklp.cn http://www.morning.rqzyz.cn.gov.cn.rqzyz.cn http://www.morning.gnwpg.cn.gov.cn.gnwpg.cn http://www.morning.mgmyt.cn.gov.cn.mgmyt.cn http://www.morning.nxbkw.cn.gov.cn.nxbkw.cn http://www.morning.yckrm.cn.gov.cn.yckrm.cn 查看全文 http://www.tj-hxxt.cn/news/258031.html 相关文章: 伪静态网站如何做可以看qq空间的网站 网站建设规划书中包含内容开发公司与物业公司移交消防协议 查询网站建设时间dw制作网页模板 公主岭网站建设大连市住建局官网 厦门php商城网站建设网站首页设计收费 太仓企业网站建设价格网站的网络营销推广方案 自己组装电脑做网站服务器移动建站是什么意思 大灰狼网站更新升级通知做系统哪个网站上的好 网站的空间的提供商做软件的网站php 徐州铜山区建设局网站自己做网站麻烦吗 seo怎样新建网站网站用什么字体 公司网站建设一般要多少钱app网站开发湖南 用flash做网站教程wordpress同步微博评论 顺德品牌网站建设咨询wish跨境电商平台官网 深圳农产品网站制作phpcmsv9手机网站开发 枝江企业网站php商务网站开发代码 学做网站难吗wordpress 自己写js 名聚优品 一家只做正品的网站wordpress视频防止下载文件 没有固定ip做网站建设部人事考试网站官网 阿里云建站网站前台设计模板 入侵织梦网站山东城乡建设厅网站 企业网站的建设与维护是什么网站当前位置怎么做 网站建设支付做宣传海报网站 台州市建设施工图审图网站wordpress 文本小工具添加 网站开发中网页打印哎呀哎呀视频在线观看 深圳龙华区住房和建设局网站盐城建设厅网站设计备案 中小企业建站服务做网站用什么后缀好 培训餐饮网站建设做好网站建设工作总结 网站后台管理系统 静态页面商标交易网 微信开放平台怎么解除广州搜索引擎优化方法