
Effective C++
土戈
软件开发
展开
-
Effective C++笔记之一:声明、定义、初始化与赋值
一.声明(Declaration) 区分声明和定义可以让C++支持分开编译,声明常常见于头文件中。源文件包含头文件之后,就可以使用这个变量,即使没有看到该变量的定义。 声明的语法如下: extern int i; // object declaration int numDigits(int number); // function declaration class Widget; // cla...转载 2018-10-15 15:47:59 · 247 阅读 · 0 评论 -
Effective C++笔记之二:尽量以const、enum、inline替换#define
一.#define定义的类似函数的宏,使用时易出错 缺点描述 这样做的初衷是,宏看起来像函数,但不会招致函数调用(function call)带来的额外开销。但即使你为所有实参加上小括,仍然会在使用时遭遇麻烦。举个例子: // 求两个变量中最大的那个 #define THE_MAX(a, b) ((a) > (b) ? (a) : (b)) 当这样使用的时候: THE_MAX(++a, ++...转载 2018-10-15 16:33:05 · 127 阅读 · 0 评论 -
Effective C++笔记之三:尽可能使用const
一.const作用于迭代器 STL选代器相当于T* const 指针 ,表示不得指向不同的东西,但它所指的东西的值是可以改动的。如果你希望迭代器所指的东西不可被改动(即希望STL模拟一个const T* 指针) ,你需要的是const_iterator: std::vector<int> vec; const std::vector<int>::itera...转载 2018-10-16 09:16:01 · 504 阅读 · 0 评论 -
Effective C++笔记之七:为多态基类声明virtual析构函数
应该为多态基类声明virtual析构函数,否则容易造成内存泄露。 因为当derived class对象经由一个base class指针被删除,而该base class如果带有一个non-virtual析构函数,其结果是对象的derived成分没被销毁。 #include<iostream> using namespace std; class Base { public: ...转载 2018-10-16 09:21:28 · 152 阅读 · 0 评论 -
Effective C++笔记之十五:inline函数的里里外外
1.inline函数简介 inline函数是由inline关键字来定义,引入inline函数的主要原因是用它替代C中复杂易错不易维护的宏函数。 2.编译器对inline函数的处理办法 inline对于编译器而言,在编译阶段完成对inline函数的处理。将调用动作替换为函数的本体。但是它只是一种建议,编译器可以去做,也可以不去做。编译器对inline函数的处理步骤一般如下: (1)将inline...转载 2018-10-16 09:55:52 · 212 阅读 · 0 评论