<c++ primer>--第五部分 高级主题
一 多重继承与虚继承
1多重继承
派生类的对象包含每个基类的基类子对象。
派生类构造函数的次序按照基类构造函数在派生类类表中的出现顺序。
析构函数的次序是构造函数的逆序。
多个基类可能导致二义性。(含有相同的成员)
解决方法:1指定某个基类。2在派生类中定义这样一个成员。
2虚继承(virtual)
为了避免多次包含同一基类,定义虚继承。
类通过虚继承之处它希望共享其虚基类的状态。
共享的基类子对象称为虚基类。
无论虚基类出现在继承层次的任何地方,总是在构造非虚基类之前构造虚基类。
二优化内存分配
c++中,内存分配和对象构造紧密连接。new表达式分配内存,使用构造函数构造对象;调用析构函数撤销对象,释放内存。
c++中除了new和delete之外,定义的内存分配方式有:
分配和释放内存:
(1) allocator类的allocate和deallocate成员。
(2)operator new 和operator delete(这两个被new和delete表达式调用)
构造和撤销对象:
(1)allocator类的construct和destroy成员
(2)定位new表达式 new(address) type(initializer-list)
(3)直接调用对象的析构函数。析构函数并不释放对象所在的内存。
(4)unitialized_fill和unitialized_copy
三 固有的不可移植的特征
1位域
一种特殊的类数据成员。
例如,class file{Bit mode:2;Bit pp:3;}
补充:按位与& 按位或| 按位异或^ 按位求反~ 左移<< 右移>>
2 volatile
关键字volatile告诉编译器,对这样的对象不执行优化。
一般用在多线程程序中,以防止出错。
3extern "C"---链接指示
说明是c语言写的函数
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!