effective c++

草上爬2 个月前
开发语言·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。不论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统。
StudyWinter1 年前
开发语言·c++·keep studying·effective c++
Effective C++条款09——绝不在构造和析构过程中调用virtual 函数(构造/析构/赋值运算)本条款开始前我要先阐述重点:你不该在构造函数和析构函数期间调用virtual函数,因为这样的调用不会带来你预想的结果,就算有你也不会高兴。如果你同时也是一位Java或C#程序员,请更加注意本条款,因为这是CH+与它们不相同的一个地方。