effective c++

哎呦,帅小伙哦1 个月前
c++·effective c++
Effective C++ 规则51:编写 new 和 delete 时需固守常规在 C++ 中,如果你需要为类自定义 new 和 delete,必须遵循一些约定和规则,以确保内存管理的一致性、可维护性和安全性。当我们使用 new 和 delete 操作时,C++ 编译器会:
哎呦,帅小伙哦1 个月前
c++·effective c++
Effective C++ 规则50:了解 new 和 delete 的合理替换时机在 C++ 中,new 和 delete 是动态分配内存的核心操作符。然而,直接使用它们有时会增加程序的复杂性,甚至导致内存泄漏和其他问题。因此,了解何时替换 new 和 delete 并选择更适合的内存管理策略,是编写高效、健壮 C++ 程序的关键。直接使用 new 和 delete 存在以下潜在问题:
哎呦,帅小伙哦1 个月前
c++·effective c++
Effective C++ 规则41:了解隐式接口和编译期多态C++ 中的 隐式接口 是指类或者模板中不显式声明为接口的一部分,但仍然可以像接口一样使用的成员或方法。隐式接口通常指那些不显式声明为虚函数的函数或者方法,但在多态上下文中仍然能表现出类似接口的行为。 隐式接口通常出现在模板编程中,尤其是 模板类型推导、SFINAE(Substitution Failure Is Not An Error) 技术或者 类型特性(type traits)等编译期机制中。它使得类和函数可以灵活地与多种类型协作,而无需显式继承或声明接口。考虑下面的例子:
草上爬7 个月前
开发语言·c++·effective c++·odr
Effective C++笔记之二十一:One Definition Rule(ODR)ODR细节有点复杂,跨越各种情况。基本内容如下: ●普通(非模板)的noninline函数和成员函数、noninline全局变量、静态数据成员在整个程序中都应当只定义一次。 ●class类型(包括structs和unions)、模板(包括偏特化但是不包括全特化)、inline函数和inline变量在单个编译单元中最多定义一次,并且这些定义应该完全一样。 一个编译单元是源文件预处理后的结果,也就是说,它包含#include指令和宏拓展后的内容。与C语言一样,C++中所有的预处理指令都是以字符#开头,这些指令
StudyWinter1 年前
开发语言·数据结构·c++·学习·keep studying·effective c++
Effective C++条款17——以独立语句将newed 对象置入智能指针(资源管理)假设我们有个函数用来揭示处理程序的优先权,另一个函数用来在某动态分配所得的widget上进行某些带有优先权的处理:
StudyWinter1 年前
开发语言·c++·学习·keep studying·effective c++
Effective C++条款13——以对象管理资源(资源管理)前言所谓资源就是,一旦用了它,将来必须还给系统。如果不这样,糟糕的事情就会发生。C++程序中最常使用的资源就是动态分配内存(如果你分配内存却从来不曾归还它,会导致内存泄漏),但内存只是你必须管理的众多资源之一。其他常见的资源还包括文件描述器(file descriptors)、互斥锁( mutex locks)、图形界面中的字型和笔刷、数据库连接、以及网络sockets。不论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统。
StudyWinter2 年前
开发语言·c++·keep studying·effective c++
Effective C++条款09——绝不在构造和析构过程中调用virtual 函数(构造/析构/赋值运算)本条款开始前我要先阐述重点:你不该在构造函数和析构函数期间调用virtual函数,因为这样的调用不会带来你预想的结果,就算有你也不会高兴。如果你同时也是一位Java或C#程序员,请更加注意本条款,因为这是CH+与它们不相同的一个地方。