您的位置:首页 > 编程语言 > C语言/C++

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 变量名
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 成员函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: