IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c++陷阱 -> 正文阅读

[C++知识库]c++陷阱

技巧

1.使用外覆代理类,只有方法和指向要代理对象的一个指针,构造初始化这个指针,这样耦合性很低。代理类可以加上RRID,资源释放即析构。还可以进一步优化使用raii的指针对象,自动释放对象。
2.动态多态和静态多态:
C++中的动态多态有如下优点:
? 可以很优雅的处理异质集合。
? 可执行文件的大小可能会比较小(因为它只需要一个多态函数,不像静态多态那样,需
要为不同的类型进行各自的实例化)。
? 代码可以被完整的编译;因此没有必须要被公开的代码(在发布模板库时通常需要发布
模板的源代码实现)。
C++中 static 多态的优点:
? 内置类型的集合可以被很容易的实现。更通俗地说,接口的公共性不需要通过公共基类
实现。
? 产生的代码可能会更快(因为不需要通过指针进行重定向,先验的(priori)非虚函数
通常也更容易被 inline)。
? 即使某个具体类型只提供了部分的接口,也可以用于静态多态,只要不会用到那些没有
被实现的接口即可。

陷阱

1.c++的abi(二进制接口),标准没有定义。对象布局(包括基类),调用约定和name mangling,虚函数机制,静态对象实例化,c++语言支持(set_unexpected,operate new[]等),异常处理,RTTI,模板实例化机制,运行时库内存调试,不同平台都没有统一。
2.inline使代码耦合性提高改动引起重新编译,使代码膨胀,cache装不下大函数的情况可能影响运行速度。还有debug调试不能进入内联函数的问题。
3.区分萃取和策略。
? 萃取代表的是一个模板参数的本质的、额外的属性。
? 策略代表的是泛型函数和类型(通常都有其常用地默认值)的可以配置的行为。
为了进一步阐明两者之间可能的差异,我们列出了如下和萃取有关的观察结果:
? 萃取在被当作固定萃取(fixed traits)的时候会比较有用(比如,当其不是被作为模板
参数传递的时候)。
? 萃取参数通常都有很直观的默认参数(很少被重写,或者简单的说是不能被重写)。
? 萃取参数倾向于紧密的依赖于一个或者多个主模板参数。
? 萃取在大多数情况下会将类型和常量结合在一起,而不是成员函数。
? 萃取倾向于被汇集在萃取模板中。
对于策略类,我们有如下观察结果:
? 策略类如果不是被作为模板参数传递的话,那么其作用会很微弱。
? 策略参数不需要有默认值,它们通常是被显式指定的(虽有有些泛型组件通常会使用默
认策略)。
? 策略参数通常是和其它模板参数无关的。
? 策略类通常会包含成员函数。
? 策略可以被包含在简单类或者类模板中
3.SFINAE(替换失败但不是错误)最主要的作用,是保证编译器在泛型函数、偏特化、及一般重载函数中遴选函数原型的候选列表时不被打断。除此之外,它还有一个很重要的元编程作用就是实现部分的编译期自省和反射。
4.string内存优化:cow(写时复制)已经不需要了,有替代方案string_view和std::move,sso(small string optimizations)字符串比较短就放栈中,拷贝就是值拷贝。
5.如果基类析构需要执行或者class已经有了虚函数,析构函数需要改成虚函数。这样基类的虚构函数才会执行。但是一般如果设计成基类不带数据,也不需要析构就不要加了,加了虚函数内存布局就必定不是pod了

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-22 20:23:18  更:2022-02-22 20:25:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:59:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码