标志与设计淄博网站建设优化seo

张小明 2026/1/13 0:08:24
标志与设计,淄博网站建设优化seo,无锡网站制作推广,99设计网站多继承派生类的语法格式#xff1a;class 派生类名 : 继承方式1 基类名1,继承方式2 基类名2,…… { ……//派生类新添加的成员};多继承派生类对象的构造和析构:派生类名(参数表):基类名1(参数表1),基类名2(参数表2),对象成员1(参数表3),对象成员2(参数…多继承派生类的语法格式class 派生类名 : 继承方式1 基类名1,继承方式2 基类名2,…… {……//派生类新添加的成员};多继承派生类对象的构造和析构:派生类名(参数表):基类名1(参数表1),基类名2(参数表2),对象成员1(参数表3),对象成员2(参数表4),… {//派生类新添加的成员}派生类构造执行顺序是按照基类对象、成员对象、普通变量的高到低优先级执行的其中其中基类对象的调用顺序和声明继承关系的顺序有关。但是析构函数的执行顺序与之相反先调用派生类的析构函数再调用对象成员的析构函数最后调用基类的析构函数。访问不同基类同名成员时的二义性class A{ public: int value; void f(){}; }; class B{ public: int value; void f(){}; void g(){}; }; class C: public A, public B{ public: void g(){}; void h(){}; }; int main(){ C C1; C1.f(); C1.value9; return 0; }这里在调用f()和value时会出现二义性因为编译器不知道你访问的是A和B中的哪一个()和value。所以在此我们需要填写他的“绝对路径”类名对成员加以限定改成int main(){C C1;C1.A::f();C1.A::value9//访问A的f()和value。return 0;}第二种情况class A{ public: int a; void g( ){}; }; class B1: public A{ int b1; }; class B2: public A{ int b2; }; class C: public B1, public B2{ int c; public: int f(){}; }; int main(){ C Cobj; Cobj.a8; Cobj.A::a9; Cobj.g( ); return 0; }这一二义性的冲突是因为B1、B2都有一个公共基类A这个公共基类会在派生类对象中产生两个基类子对象于是我们也要来对此进行限定Cobj.B1::a9;或 Cobj.B2::a9;但是这还有一个问题使用绝对路径找到的基类我们也可以得知派生类对象中存在多个基类对象的拷贝导致空间浪费解决方法也很简单将A设为虚基类即可这样 B1 和 B2 继承 A 时C 最终只会保留一份 A 的子对象就不会有二义性了。虚基类虚基类子对象被合并成一个子对象这种“合并”作用使得可能出现的二义性被消除。下面是使用虚基类与没使用虚基类的概念图class A { public: int a 10; void g() { cout A的g()函数a a endl; } }; // B1虚继承A class B1 : virtual public A {}; // B2虚继承A class B2 : virtual public A {};虚基类构造函数的调用次序有着自己独特的次序规则1对于最终派生类来说虚基类的构造必须在非虚基类之前调用2同一个层次中包含多个虚基类那么按照虚基类构造函数按它们说明的次序调用。若虚基类由非虚基类派生则遵守先调用基类构造函数再调用派生类构造函数的规则。举个栗子class base{…}; class bas2{…}; class level1 : public base2, vitrual public base{…}; class level2 : public base2, vitrual public base{…}; class toplevel : public level1, vitrual public level2{…};声明toplevel 时构造顺序是从 “最顶层虚基类” 开始再到 “普通基类 / 中间类”最后到自身第一步先调用全局虚基类base被level1、level2都虚继承了所以base是全局虚基类会被优先构造且只构造 1 次→ 顺序第 1 位base第二步按照规则优先调用虚基类level2是toplevel的虚基类所以要先构造level2规则1而构造level2时要先构造它的基类level2的基类base2普通先构造 base虚基类已经构造过了不再构造规则2→ 顺序第 2-3 位base2level2 的普通基类 → level2第三步level1是toplevel的普通基类构造level1时要先构造它的基类level1的基类base2普通先构造 base虚基类已构造规则2→ 顺序第 4-5 位base2level1 的普通基类 → level1第四步最后构造toplevel→ 顺序第 6 位toplevel综合base全局虚基类→ base2level2 的普通基类→ level2toplevel 的虚基类→ base2level1 的普通基类→ level1toplevel 的普通基类→ toplevel例2class base{…}; class base2{…}; class level1 : virtual public base2, virtual public base{…}; class level2 : virtual public base2, virtual public base{…}; class toplevel : public level1, virtual public level2{…};同样的道理但不同的是level1和level2都是虚基类。此时base与base2都是全局变量当有多个全局虚基类时构造顺序遵循按最终派生类继承链中虚基类首次出现的 继承声明顺序排序。最终派生类toplevel的继承链中base2和base首次出现在level1、level2的继承声明里且声明顺序是base2在前、base在后 → 先构造base2再构造base。所以按照构造顺序定下base2为第一位basee为第二位。再通过规则1优先构造toplevel的虚基类level2为第三位再构造普通类level1为第五位最后构造自身toplevel。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

深圳门户网站开发推广的网站有哪些

3分钟极速上手:M3U8下载神器使用全攻略 【免费下载链接】M3u8Downloader下载工具 M3u8 Downloader是一款高效、易用的开源下载工具,专为M3u8格式文件设计。经过优化,它能够快速获取并下载最新、最完整的资源,即使是大型文件也能在…

张小明 2026/1/4 23:23:45 网站建设

建造师官网查询系统北京网站优化流程

Qwen3-14B 模型部署实战:从环境配置到企业级应用 在当前AI技术加速落地的背景下,越来越多企业开始探索大语言模型的私有化部署方案。然而,面对动辄上百GB显存需求的千亿参数模型,许多中小团队望而却步。真正的挑战不在于“能不能用…

张小明 2025/12/23 23:04:19 网站建设

酒店网站设计模板google官网入口注册

还在为《缺氧》游戏中的资源不足而烦恼吗?想要自定义你的复制人属性和技能吗?Duplicity存档编辑器正是你需要的终极工具!这款基于Web的编辑器让你轻松修改游戏存档,实现完全个性化的游戏体验。 【免费下载链接】oni-duplicity A w…

张小明 2025/12/28 0:38:13 网站建设

四合一营销型网站平潭建设局网站

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个面向新手的Nginx安装教程,要求:1. 使用腾讯云轻量服务器为例 2. 包含Putty/SecureCRT连接教程 3. 分步骤截图配文字说明 4. 常见报错如端口占用/权限…

张小明 2025/12/30 23:31:32 网站建设

建站房的公司手机网站营销页

Windows 7 程序操作指南 在日常使用 Windows 7 操作系统时,我们会涉及到众多程序的操作,了解如何高效地使用各种菜单、工具栏、对话框以及管理程序窗口等操作技巧,能够显著提升我们的工作效率。下面将为大家详细介绍这些操作的方法和技巧。 1. 使用下拉菜单 下拉菜单是访…

张小明 2025/12/28 5:31:47 网站建设

网站怎么做mip技术网站背景图

2025轻量嵌入革命:EmbeddingGemma如何重新定义边缘智能门槛 【免费下载链接】embeddinggemma-300m-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/embeddinggemma-300m-GGUF 导语 Google DeepMind推出的300M参数嵌入模型EmbeddingGemma&#…

张小明 2026/1/11 23:16:13 网站建设