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

C++ const的学习

2014-07-10 22:49 183 查看
const与#define的比较:

const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。对后者只进行字符替换,没有类型安全检查,发生在预处理时期。同时对字符替换时可能发生意料不到的错误。
有些调式工具可以对const常量进行调试,却不能对宏常量进行调试。
用const修饰函数的参数,只能修饰输入参数

如果输入参数采用指针传递,加const可以防止意外的改动指针,起到保护作用。
如果输入参数采用值传递,由于函数将自动产生临时变量用于复制该参数,所以加const没有意义。
对于非内部数据类型的参数,如果不期望会改变参数本身,可以通过加const并以引用方式传递。
用const修饰函数的返回值

如果给以指针传递的方式的函数返回值加上const,表示该指针的内容不能更改。并只能被赋给const修饰的同类型指针。
如果函数以值传递的方式,那么加const没有任何意义,
函数返回值采用引用传递的场合并不多,一般值出现在类的赋值函数中,目地是为了实现链式操作
const成员函数:任何不会修改数据成员的函数都应该声明为const。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++