邳州微网站开发做网站的要求

张小明 2025/12/31 22:48:23
邳州微网站开发,做网站的要求,地址定位怎么申请开通,优购物官方网站女鞋一.继承的概念继承是一种可以让代码复用的机制#xff0c;它在保持原有类结构的基础上进行拓展#xff0c;增加方法和变量形成新的类#xff0c;称为派生类。派生类继承的叫做基类。继承定义格式继承按照访问权限符分类类成员/继承方法public继承protect继承private继承基类…一.继承的概念继承是一种可以让代码复用的机制它在保持原有类结构的基础上进行拓展增加方法和变量形成新的类称为派生类。派生类继承的叫做基类。继承定义格式继承按照访问权限符分类类成员/继承方法public继承protect继承private继承基类public派生类的public成员派生类的protect成员派生类的private成员基类protect派生类的protect成员派生类的protect成员派生类的private成员基类private派生类不可见派生类不可见派生类不可见这样做的目的是protect可以让子类进行访问的到同时保证类外不会访问到protect的成员虽然基类private派生类不可见但派生类仍然继承了基类的成员基类的private成员在派生类中无论以何种方式继承都是不可见的。这种不可见性意味着基类的私有成员虽然会被继承到派生类对象中但在语法上禁止派生类对象无论在类内部还是外部访问这些成员。基类的private成员在派生类中不可访问。若希望基类成员不能被类外直接访问但允许派生类访问则应将其定义为protected。可见protected访问限定符正是为继承场景而设计的。通过总结可以发现基类的私有成员在派生类中始终不可见。对于基类的其他成员在派生类中的访问权限等于成员在基类的访问限定符与继承方式中的较小者遵循public protected private的优先级规则。class关键字默认使用private继承方式struct关键字默认使用public继承方式。但最佳实践是显式声明继承方式。实际开发中主要采用public继承极少使用protected/private继承。因为这两种继承方式会导致继承的成员只能在派生类内部使用不利于代码的扩展和维护。二.基类与派生类的转化public继承的派生类对象可以赋值给基类的指针/引用。把派生类的基类部分切片给基类指针/引用基类对象不能赋值给派生类对象基类的指针/引用可以强制转换类型赋值给派生类的指针/引用。但必须是基类指针指向派生类对象才是安全的。意思就是创建基类类型的指针指向派生类而不是创建基类类型指针指向基类后又把这个指针转给派生类指针。三.继承中的作用域继承体系里基类和派生类有独立的作用域派生类与基类有同名成员派生类成员会隐藏基类的同名成员叫做隐藏对于隐藏的函数可以指定类域访问成员函数只要同名就会构成隐藏四.派生类默认成员函数派生类构造函数必须调用基类的构造函数用来初始化基类的成员。若基类没有默认的构造函数则派生类必须在初始化列表初始化。派生类的拷贝构造函数必须调用基类的拷贝构造函数完成基类的拷贝构造。派生类的operator必须显式调用基类的operator来完成基类部分的复制。需要注意的是派生类的operator会隐藏基类的operator因此在调用时需要指定基类作用域。派生类的析构函数执行完毕后会自动调用基类的析构函数来清理基类成员。这种机制确保了对象销毁时遵循先清理派生类成员、再清理基类成员的正确顺序。派生类初始化对象先调用基类构造在调用派生类构造析构先调用派生类析构再调用基类析构由于多态需要析构函数构成重写导致析构函数处理成destructor导致父类子类会隐藏父类析构函数在基类不加virtual下实现不可被继承类可以将类名后加final这代表此类无法被继承也可以将类的默认构造函数用private 让子类无法访问就无法被继承了继承和友元父类的友元不会被子类继承继承与静态成员基类定义一个static成员则整个继承关系中只有这一个这样的成员五.多继承单继承当一个派生类仅有一个直接基类时这种继承关系称为单继承。多继承若一个派生类拥有两个或更多直接基类则称为多继承。在多继承中对象的内存布局遵循继承顺序先继承的基类位于内存前部后继承的基类依次排列派生类成员则置于最后。菱形继承这是多继承中的特殊情形。从对象成员模型分析可见菱形继承会导致数据冗余和二义性问题如Assistant对象中包含两份Person成员。由于多继承必然存在菱形继承问题部分语言如Java选择直接禁用多继承来规避此问题。因此在实际开发中应当避免设计菱形继承结构。虚继承因为多继承导致棱形继承二义性所以就有了虚继承。虚继承是C中解决多重继承带来的菱形继承问题的一种机制。它通过确保基类在继承体系中只被继承一次来避免数据冗余和歧义。在多重继承中当派生类通过不同路径继承同一个基类时会产生菱形继承问题。例如class Base { public: int data; }; class Derived1 : public Base { // 继承Base }; class Derived2 : public Base { // 继承Base }; class Final : public Derived1, public Derived2 { // 通过Derived1和Derived2间接继承了两个Base };这种情况下Final类中将包含两个Base子对象导致数据冗余 - 两份Base成员变量访问歧义 - 无法直接访问Base成员必须通过特定路径虚继承的解决方案使用virtual关键字声明继承关系class Derived1 : virtual public Base { // 虚继承Base }; class Derived2 : virtual public Base { // 虚继承Base }; class Final : public Derived1, public Derived2 { // 现在只包含一个Base子对象 };实现原理虚基类指针vbase_ptr编译器为每个虚继承的类添加一个指针指向共享的基类子对象虚基类表vbtable存储虚基类偏移量信息共享实例确保整个继承体系中只有一个基类实例示例代码#include iostream class Animal { public: Animal() { std::cout Animal constructor\n; } void breathe() { std::cout Breathing...\n; } }; class Mammal : virtual public Animal { public: Mammal() { std::cout Mammal constructor\n; } }; class WingedAnimal : virtual public Animal { public: WingedAnimal() { std::cout WingedAnimal constructor\n; } }; class Bat : public Mammal, public WingedAnimal { public: Bat() { std::cout Bat constructor\n; } }; int main() { Bat bat; bat.breathe(); // 没有歧义因为只有一个Animal实例 return 0; }输出结果Animal constructor Mammal constructor WingedAnimal constructor Bat constructor Breathing...六.继承和组合继承与组合的区别继承关系public继承体现的是is-a关系即每个派生类对象本质上都是一个基类对象。继承允许基于基类实现来定义派生类这种复用方式称为白箱复用white-box reuse。白箱指基类的内部细节对派生类可见。继承会破坏基类封装性基类的修改会显著影响派生类两者之间存在强依赖关系耦合度高。组合关系组合体现的是has-a关系例如类B组合类A时每个B对象都包含一个A对象。组合是继承之外的另一种复用方式通过组装对象实现更复杂功能要求被组合对象有良好定义的接口。这种复用称为黑箱复用black-box reuse因为对象内部细节不可见仅通过接口交互。组合类之间依赖关系弱耦合度低有助于保持类的封装性。使用建议优先使用组合组合耦合度低代码更易维护继承适用场景当类之间确实是is-a关系时需要实现多态功能时权衡选择当关系既适合继承又适合组合时优先选择组合方式
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站制作报价黑河成都住建局官网查询入口

摘要/前言2025年即将过去,回首这一年,技术圈发生了翻天覆地的变化。AI 编程助手(如 GitHub Copilot, Cursor, Gemini Code Assist)已经成为标配,传统的 CRUD 工程师面临前所未有的危机。很多人问我:“2026年…

张小明 2026/1/1 8:00:41 网站建设

绑定网站域名怎么做网络营销的优势有哪些?

Keycloak渐进式部署实战指南:零停机升级完整方案 【免费下载链接】keycloak Keycloak 是一个开源的身份和访问管理解决方案,用于保护应用程序和服务的安全和访问。 * 身份和访问管理解决方案、保护应用程序和服务的安全和访问 * 有什么特点:支…

张小明 2026/1/1 8:00:38 网站建设

做外贸的专业网站石家庄seo网站优化电话

存储时长、生命周期与可见性 在编程中,理解对象的存储时长、生命周期和可见性是非常重要的,它们直接影响着程序的正确性和性能。下面我们将详细探讨这些概念。 1. 动态分配的一致性 在进行动态内存分配时,调用 malloc 、 realloc 和 free 等分配函数应该成对出现。…

张小明 2026/1/1 8:00:35 网站建设

新翼设计网站建设公司网站建设工作自查报告

开源神器GPT-SoVITS:低数据需求下的高效语音克隆解决方案 在如今人人都想打造“数字分身”的时代,你是否也想过用自己的声音朗读小说、播报新闻,甚至让AI替你说话?但传统语音合成技术动辄需要几小时的专业录音和昂贵的训练成本&am…

张小明 2025/12/31 21:53:18 网站建设

邹城网站建设哪家好写作网站制作

第一章:为什么顶尖企业都在用定制化Agent做Docker安全扫描?在容器化技术广泛应用的今天,Docker已成为软件交付的核心载体。然而,标准的安全扫描工具往往滞后于攻击手法的演进,难以满足高合规性与实时防护的需求。顶尖企…

张小明 2025/12/31 22:58:31 网站建设

android网站开发视频教程培训前端网站开发

FaceFusion镜像支持GPU共享模式降低成本在生成式AI应用快速普及的今天,人脸融合技术正从实验室走向大众消费场景。无论是短视频平台的趣味换脸滤镜,还是数字人直播中的实时形象合成,FaceFusion这类高保真工具已成为视觉AIGC生态的关键组件。然…

张小明 2025/12/31 22:26:10 网站建设