Effective C++

effective c++ 和 more effective c++中知识点 尽可能使用 const在 C++ 编程中,尽可能使用。 阅读详情

第1条:    把C++看作多种语言的联合体,不只是objective C,  还有template

第2条:    尽量使用const、enum、inline,避免使用 #define。

l         对#define 宏变量, 用const 变量代替

l         对#define 宏函数, 用模板函数+inline代替

l         早先的时候定义静态类常量时不能同时赋值,于是就用enum作为替代,当作静态类常量。现在的编译器都已支持静态类常量声明的同时给予赋值,故这个enum技术可以休息。

l         enum 现在主要用于模板元技术

 

第3条:    尽量使用const

l         要点就是加强访问属性控制。

l         应用,不只是定义const数据变量,还有const 成员函数

l         坚持const风格。const风格严重排他,一处的代码const风格,其他所有地方都要const。对旧代码,要么加封装层,要么const_cast<>()

l         实现const operator[],必须同时分别实现const和非const版本

l         避免 const 与非 const 成员函数之间的重复。如果const 版本与 非const版本是一致的,那么可以用const 版本实现 非const版本。但是任何时候都不应该用非const 版本实现const版本。

l         适当的使用mutable,表示非按位const,而是按逻辑const。在单线程下安全。

 

第4条:    确保对象在使用前得到初始化

l         对于构造器,要尽量使用成员初始化表,避免在构造器内部进行复制。初始化表中的次序要与成员在类中被声明的次序相一致

l         要避免跨置换单元的初始化次序问题发生,可以使用局部静态对象来代替非局部静态对象。因为跨置换单元的初始化次序是不定的。

第5条:    要清楚 C++ 在后台为你书写和调用了什么函数

 

第6条:    要显式禁止编译器为你生成不必要的函数

l         禁止被复制。将拷贝函数和赋值函数修饰为private[1]

l         禁止被继承。将构造函数定义为priviate

l         禁止实例化,只作为抽象类。将构造函数修饰为protected。或者析构函数定义为protected。

l         禁止堆分配。将 operator new, operator delete 显式声明,并修饰为private

l         强制堆分配,将析构函数定义为private。同时定义一个接口函数,用于原先的delete工作。(因为delete 运算符会自动调用析构函数。就像new会自动调用构造函数)



[1] 也可以简单的继承uncopyable类。个人按:为什么不能是包含?组合才是王道。

[Effective modern cpp]现代c++区别 读书笔记创建对象时使用()和{}的区别空指针优先选用nullptr,而非0或null 创建对象时使用()和{}的区别 1、大括号可以指定容器的初始内容&amp;gt;。 std::vector&amp;lt;int&amp;gt; v{1,3,5} 2、大括号可以用来为非静态成员指定默认初始化值,也可以用’='的初始化语法,不能用()。 class Widget{ ... private: int x{0};/... 阅读详情

相关推荐

Effective C++ 总结

当变量定义出现时,程序需要承受其构造成本;当变量离开其作用域时,程序需要承受其析构成本。因此,避免不必要的变量定义,以及延后变量定义式直到你确实需要它。// 效率低// 效率高Widget w;i < n;++i) {w = 取决于 i 的某个值;...这种做法产生的开销:1 个构造函数 + 1 个析构函数 + n 个赋值操作i < n;++i) {Widget w(取决于 i 的某个值);...这种做法产生的开销:n 个构造函数 + n 个析构函数。

qq_31978997的博客 369

Effective-Modern-Cpp 项目常见问题解决方案

Effective-Modern-Cpp 项目常见问题解决方案 项目基础介绍 Effective-Modern-Cpp 是一个开源项目,旨在提供 C++11 及其之后标准的最佳实践。该项目适合希望快速入门现代 C++ 的开发者,特别是那些已经掌握 C++ 基础语法和 C++98 最佳实践的开发者。项目主要使用 C++ 编程语言,包含了一系列关于现代 C++ 编程的最佳实践和技巧。 主要编程语言 ...

gitblog_00864的博客 444

Effective Modern C++ Scott Meyers 类型推导 Type Deduction 《Effective STL》 vector and string

Effective Modern C++》是一本由Scott Meyers撰写的书籍,该书主要讨论了C++11和C++14(现代C++)中的关键特性和最佳实践,以帮助读者编写出更高效、更安全、更易维护的代码。Scott Meyers是世界顶级的C++软件开发技术权威之一,他曾是C++ Report的专栏作家,并为C/C++ Users Journal和Dr. Dobb’s Journal等刊物撰稿。

万有文的博客 2301

Effective-Modern-CPP 开源项目指南

Effective-Modern-CPP 开源项目指南 项目概述 本指南旨在帮助开发者快速理解和上手 Effective-Modern-C++ 这一开源项目。该项目基于Scott Meyers的同名书籍《Effective Modern C++》,旨在通过代码示例展示C++11及以后版本中的现代编程实践和技术。 1. 项目目录结构及介绍 ├── README.md # 项目说明文件,包...

gitblog_00774的博客 472

FPGA音频处理入门:手把手教你用Verilog实现I2S接收模块(附完整代码)

本文详细介绍了如何使用Verilog在FPGA上实现I2S接收模块,涵盖I2S协议原理、Verilog架构设计、完整代码实现及优化技巧。通过实战案例,帮助开发者快速掌握数字音频处理技术,适用于嵌入式音频系统开发。

weixin_30335575的博客 417

实战指南:在UE5中高效集成Entt(ECS)框架

本文提供了一份在虚幻引擎5中高效集成Entt ECS框架的实战指南。针对UE5项目在处理大规模动态实体时的性能瓶颈,详细讲解了如何通过数据驱动的ECS架构进行优化。内容包括前期环境准备、核心构建步骤、创建首个ECS子系统以及与UE原生系统的数据同步技巧,旨在帮助开发者快速掌握集成方法,提升游戏逻辑的执行效率。

weixin_29002209的博客 158

effective modern cpp

中文网页版 https://github.com/kelthuzadx/EffectiveModernCppChinese https://www.kancloud.cn/kangdandan/book/169968

janeqi1987的专栏 493

告别环境配置烦恼:用Conda一键搞定GATK4、samtools、fastp等生信分析全家桶

本文介绍如何利用Conda快速搭建包含GATK4、samtools、fastp等工具的生物信息学分析环境,解决软件安装和版本冲突问题。通过详细的配置步骤和实战案例,帮助研究者十分钟内完成重测序分析全家桶的环境配置,显著提升上游分析效率。

weixin_30753873的博客 334

【Cpp】《Effective C++》第一章-让自己习惯C++

  这是我在学习《Effective C++》中总结得出的心得与体会,完全是以我自己的理解所作的笔记,是对个人经验的积累。基于第三版我以每个章节进行总结,全书一共九个章节。 第一章-让自己习惯C++ 条款01:视C++为一个语言联邦   View C++ as a federation of languages.   在初期Cpp被开发之初,Cpp并没有如今这样丰富的功能,它更应该被称为仅是一个带...

qq_41669298的博客 340

从零到一:用Python打造你的智能交互桌宠,附完整源码与打包指南

本文详细介绍了如何从零开始使用Python开发智能交互桌宠,涵盖环境配置、窗口创建、动图加载、交互功能实现及打包发布全流程。教程特别适合零基础开发者,通过完整源码和分步指南,帮助读者快速掌握桌面宠物开发技巧,打造个性化AI伴侣。

weixin_29094539的博客 292

焦距与视差的关系及其对深度估计的影响

焦距在立体视觉中的作用至关重要,它直接影响视差的大小,从而影响深度估计的精度。焦距越长,视差差异越大,物体的深度估计就越精确。这一关系使得焦距长的相机在一些需要高精度深度估计的应用场景中更加优越。了解焦距与视差的关系,对于优化相机配置和提升深度估计精度具有重要意义。在实践中,选择合适的焦距对于获得精确的深度信息至关重要,特别是在自动驾驶、虚拟现实、三维重建等领域,精确的深度估计能够提供更好的用户体验和技术支持。

计算机科学与技术专业学生的成长之路 1671

Effective C++ 学习笔记

C++程序员分为两种,一种是读过Effective C++的,一种是没读过。这本《Effective C++》 能够协助成为高效的C++开发者。简直是C++开发者的分水岭。 必须细读多遍。 本人小硕菜鸡一枚,非科班,准备今年7月从事C++开发者,修炼内功,一天学习一个effective C++条款。欢迎大佬指导讨论。 fighting!

Ref.Ptr.的博客 3869

【Bug已解决】Codex 报错 MCP client for context7 failed to start: program not found 解决方案

方案适用场景推荐指数改用绝对路径Windows 上最常见、最有效的解决方式⭐⭐⭐⭐⭐提前全局安装避免依赖 npx减少运行时网络下载的不确定性⭐⭐⭐⭐使用 .cmd 后缀Windows 平台快速尝试⭐⭐⭐⭐开启调试日志需要更精确定位失败原因⭐⭐⭐⭐统一封装启动脚本需要跨平台兼容多个 MCP 服务⭐⭐⭐报错的本质是Codex 启动 MCP 子进程时,无法正确定位配置文件中写的简写命令名对应的可执行文件,尤其容易发生在 Windows 平台上使用npx这类简写命令的场景。

一键难忘的博客 5814

Effective C++与More Effective C++全书签中英文版本

Effective C++与More Effective C++全书签中英文版本 去发现同类优质开源项目:https://gitcode.com/ 简介 本仓库提供了C++程序员必备的进阶学习资料——《Effective C++》和《More Effective C++》的中英文对照版本。压缩包内共计四本书籍,其中《Effective C++》中文版为高清影印版,其余三本均为文字版本,保证清晰度,...

gitblog_06722的博客 352

ABAP CDS 视图参数 parameter_list 详解与最佳实践:从语法、作用域到可运行范例

本文系统梳理了ABAP CDS视图的WITH PARAMETERS定义与使用。主要内容包括:1)参数声明语法及其在整条SELECT语句中的贯穿使用;2)参数在WHERE/HAVING/ON等位置的多种写法(:pname和$parameters.pname);3)参数在航空公司航线筛选等实际业务场景中的应用;4)参数与会话变量的协作策略;5)在JOIN ON、HAVING、CASE等高级用法中的实践;6)提供完整的CDS视图与ABAP程序示例,展示参数声明、使用及Open SQL传参方式。所有内容均基于SAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 372

【保姆级教程】基于UNet++&MobileNetv2的语义分割模型从训练到RK3588部署:让边缘AI落地效率提升300%

通过SMP库一键构建encoder_name="mobilenet_v2", # 选择MobileNetv2作为骨干encoder_weights="imagenet", # 加载预训练权重加速收敛in_channels=3, # 输入图像通道数(RGB)classes=29, # Cityscapes数据集类别数activation=None # 输出无激活,便于后续损失计算本教程从“模型设计-训练-转换-边缘部署”全链路拆解了。

FJN110的博客 210

Effective & More Effective C++总结

 一、说明。1、E指的是《Effective C++ 第二版》2、M指的是《More Effective C++ 第二版》二、总结1、如果需要定制自己的operator new(通常是在需要分配大量的小对象,而且对性能要求特别敏感的程序里),具体的使用准则请参看 E7/E8/E9/E10。     (1)、全局的operator new 在里定义,可以通过::operator

jimmy_cheung_jc的专栏 765

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

再读effective c++

现在所说effective C++的系列历史,最开始Meyers出版的是effective C++第一版,然后有了more effective C++,然后是effective C++的第二版,接着是effective C++的第三版,最后是最新的 effective modern C++。effective modern C++里主要讲C++ 11的现代编程语言特性,包括类型推导,移动语义,右值

zhouguoqionghai的博客 3239

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

《effective C++》阅读笔记

《effective C++》阅读笔记

subtitle_的博客 1044

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Effective C++和More Effective C++

More Effective C++读书笔记 条款1:指针与引用的区别 二者之间的区别是:在任何情况下都不能用指向空值的引用,而指针则可以;指针可以被重新赋值以指向另一个不同的对象,但是引用则总是指向在初始化时被指定的对象,以后不能改变 在以下情况下使用指针:一是存在不指向任何对象的可能性;二是需要能够在不同的时刻指向不同的对象 在以下情况使用引用:总是指向

clam_clam的专栏 6972

Effective Cpp 条例解析

Effective 条例解析Effective 条例解析 一 让自己习惯C 1 视C为一个语言联邦 2 尽量以constenuminline 替换define 3 尽可能使用const 4 确保对象在使用前已经被初始化 二构造析构赋值运算 1 了解C默默编写并调用哪些函数 2 如果不想使用编译器提供的函数应当明确拒绝 3 为多态基类声明virtual析构函数 4 别让异常逃离析构函数 5 绝不在构造

李兰溪的专栏 1012

Note Of Effective C++ 、More Effective C++ And Effective Modern C++

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 Note Of Effective C++ 、More Effective C++ And Effective Modern

weixin_41077017的博客 1717

Effective_Modern_Cpp

摘自:https://www.kancloud.cn/kangdandan/book/169966

qq_40230900的博客 235

C++primer、Effective C++应该怎么读,如何读?

导读 刚开始C++的学习肯定就是拿起书就开始读,读了一会就放下就干别的,带最后没翻过几页。下面我就说一下,我是怎么读的,我大概一个暑假就把这两本读完了。 C++ primer 计划 有人听到计划可能退缩了,计划都是骗人的,都是假的。我的计划有点和别人不一样。听我细细道来。 首先我规定自己一天必须读完一章。这一章不管大小(当然后面的泛型或者虚函数的地方可以规定半章一天)。大家不用分的太细,几点到几点...

曲怪曲怪 1884

CPP & 笔记 - More Effective C++

基础议题 Item M1:指针与引用的区别 指针 存在不指向任何对象的可能 需要能够在不同的时刻指向不同的对象 引用 必须指向一个对象,并且不想改变其指向 在重载操作符,并为防止不必要的语义误解时,如: char &operator[](size_t idx); Item M2:尽量使用 C++ 风格的类型转换 static_cast<type>(expression):用于变量类型转换 const_cast<type>(expression):用于转换表达

灰黑的博客 302

《C++ Primer》和《Effective C++》哪个更难?

维度学习曲线渐进平缓但周期长陡峭(依赖前置知识)难点类型知识广度 $\propto$ 记忆量理解深度 $\propto$ 经验积累典型挑战模板特化、移动语义异常安全、资源管理价值阶段语言入门 $\to$ 进阶规避陷阱 $\to$ 工业级代码建议:初学者建议先通读《C++ Primer》建立知识框架,再通过《Effective C++》深化实践认知。两本书配合使用效果最佳,前者解决"怎么做",后者解决"怎么做更好"。

2509_93016958的博客 520
上一篇: 为什么不C++
下一篇: 如何开始学C++
sunshyran
博客等级 码龄17年 114粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值