随笔分类 - Effective C++
摘要:作用域屏蔽名字:内层作用域中声明的名字将隐藏外层作用域中声明的同名实体。 同名??C++有关同名的除了变量之外,也就是函数重载了!! 【作用域对于函数重载的限制】 1. 在不同的作用域中无法重载函数名 2. 函数匹配时,编译器首先寻找对该函数名的声明,一旦在当前作用域中找到了所需的名字,编译器就会忽
阅读全文
摘要:一、声明为const的原因: 把函数不会改变的形参定义成普通的引用会带给函数的调用者一种误导,即函数可以修改它的实参的值; 限制函数所能接受的实参类型,如不能把const对象、字面值或者需要类型转换的对象传递给普通引用的实参。 举例:对于附录中的“find_char函数”,由于我们把其中的strin
阅读全文
摘要:一、概述 手工初始化内置类型对象 构造函数的成员初始化列表 static对象的初始化:包括non-local static和local static 二、细节 1. 你的构造函数使用了成员初始值列表了咩 不使用初始值列表: 使用初始值列表: C++规定,对象的成员变量的初始化动作发生在进入构造函数体
阅读全文
摘要:一、概述 使用const约束对象:可以获得编译器的帮助(指出相关出错的地方) const与成员函数:const重载、转型、避免代码重复 二、细节 1. 为什么有些函数要返回const对象(看上去没必要)? 返回const对象:a * b = c; //operator*()函数返回一个const对象
阅读全文
摘要:一、概述 尽量少用预处理器——宏替换 二、细节 1. 关于宏替换之常量 旧版本:#define N 10; 新版本:const int n = 10; 比较:#define不被视为语言的一部分,记号名称N在编译器开始处理源代码之前就被预处理器移走了。 补充:class的专属常量需要封装性,而#def
阅读全文