effective c++ 学习笔记 1
2015-12-10 11:11
387 查看
条款01:视c++为一个语言联邦
c++的四个部分:c语言,object-oriented C++,Template c++,STL
条款02:尽量以const,enum,inline替换#define
宏定义可能在一开始就被预处理器从源码中移走,导致出现错误时可能无法进行追踪,浪费时间,而const常量可以很好地解决这一问题。另外const常量添加了类型检查,保证了代码的可靠性。
const可以将变量定义成只读类型,对于const的用法有这么几种:const TYPE 变量名
TYPE const 变量名以上这两种从本质上来讲都是一样的,用来定义一个普通的常量
(char *) const 变量名
这两种方法用于定义一个常指针,指针为常量
(char) const *变量名
const (char) *变量名
这两种方式定义指针所指的内容为常量
const char * const 变量名 两者均为常量
enum的地址是不合法的,const的地址是合法的,如果你不想别人获得一个pointer或者reference指向你的某个整数常量,enum可以帮助你实现这个约束
对于形似函数的宏(macros),最好改用inline函数替换#define。它看起来是函数,行为跟函数也差不多,而且也没有函数调用所带来的额外开销。
条款03:尽可能使用const
const char* p="greeting";//non-const pointer,const data
char* const p="greeting"//const pointer.non-const data
const char* const p="greeting"//const pointer,const data
如果关键字const出现在星号左边,表示被指物是常量;如果出现在右边,表示指针自身是常量,如果出现在两边,表示二者均为常量
const成员函数:
第一,它们使class接口比较容易被理解。这是因为,得知那个函数可以改动对象内容而哪个函数不行,很是重要。第二,它们使“操作const对象”成为可能。
const成员函数可以访问非const对象的非const数据成员、const数据成员,也可以访问const对象内的所有数据成员;
非const成员函数可以访问非const对象的非const数据成员、const数据成员,但不可以访问const对象的任意数据成员;
作为一种良好的编程风格,在声明一个成员函数时,若该成员函数并不对数据成员进行修改操作,应尽可能将该成员函数声明为const 成员函数。
c++的四个部分:c语言,object-oriented C++,Template c++,STL
条款02:尽量以const,enum,inline替换#define
宏定义可能在一开始就被预处理器从源码中移走,导致出现错误时可能无法进行追踪,浪费时间,而const常量可以很好地解决这一问题。另外const常量添加了类型检查,保证了代码的可靠性。
const可以将变量定义成只读类型,对于const的用法有这么几种:const TYPE 变量名
TYPE const 变量名以上这两种从本质上来讲都是一样的,用来定义一个普通的常量
(char *) const 变量名
const (char *) 变量名
这两种方法用于定义一个常指针,指针为常量
(char) const *变量名
const (char) *变量名
这两种方式定义指针所指的内容为常量
const char * const 变量名 两者均为常量
enum的地址是不合法的,const的地址是合法的,如果你不想别人获得一个pointer或者reference指向你的某个整数常量,enum可以帮助你实现这个约束
对于形似函数的宏(macros),最好改用inline函数替换#define。它看起来是函数,行为跟函数也差不多,而且也没有函数调用所带来的额外开销。
条款03:尽可能使用const
const char* p="greeting";//non-const pointer,const data
char* const p="greeting"//const pointer.non-const data
const char* const p="greeting"//const pointer,const data
如果关键字const出现在星号左边,表示被指物是常量;如果出现在右边,表示指针自身是常量,如果出现在两边,表示二者均为常量
const成员函数:
第一,它们使class接口比较容易被理解。这是因为,得知那个函数可以改动对象内容而哪个函数不行,很是重要。第二,它们使“操作const对象”成为可能。
const成员函数可以访问非const对象的非const数据成员、const数据成员,也可以访问const对象内的所有数据成员;
非const成员函数可以访问非const对象的非const数据成员、const数据成员,但不可以访问const对象的任意数据成员;
作为一种良好的编程风格,在声明一个成员函数时,若该成员函数并不对数据成员进行修改操作,应尽可能将该成员函数声明为const 成员函数。
相关文章推荐
- 华为OJ之24点算法(非递归C++代码)
- c/c++的0长数组(柔性数组)
- 二维数组和指针(C语言)
- c++爬虫
- 华为OJ之N皇后问题(C++代码)
- 值得推荐的C/C++框架和库 (真的很强大)
- bzoj3551[ONTAK2010]Peaks加强版 (dfs序+倍增+并查集+主席树)
- Cpp--拷贝构造函数(深拷贝与浅拷贝)详解
- 二、C++11多线程std::thread的简单使用(下)
- C++11并行编程-条件变量(condition_variable)详细说明
- 单例模式c++
- 变量的内存分配和释放
- C++ Has Become More Pythonic ( tuple & 可变模板参数 )
- C/C++ 库函数 是否调用 WinAPI
- C++ STL初识
- vc++ 程序开机自启动和取消启动
- VC++中的类的内存分布(上)(通过强制转换,观察地址,以及地址里的值来判断)
- C++专题(一)
- 一、C++11多线程std::thread的简单使用(上)
- C++ 11 Template ... 与Decltype 测试