C++ const的学习
2014-07-10 22:49
183 查看
const与#define的比较:
const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。对后者只进行字符替换,没有类型安全检查,发生在预处理时期。同时对字符替换时可能发生意料不到的错误。
有些调式工具可以对const常量进行调试,却不能对宏常量进行调试。
用const修饰函数的参数,只能修饰输入参数
如果输入参数采用指针传递,加const可以防止意外的改动指针,起到保护作用。
如果输入参数采用值传递,由于函数将自动产生临时变量用于复制该参数,所以加const没有意义。
对于非内部数据类型的参数,如果不期望会改变参数本身,可以通过加const并以引用方式传递。
用const修饰函数的返回值
如果给以指针传递的方式的函数返回值加上const,表示该指针的内容不能更改。并只能被赋给const修饰的同类型指针。
如果函数以值传递的方式,那么加const没有任何意义,
函数返回值采用引用传递的场合并不多,一般值出现在类的赋值函数中,目地是为了实现链式操作
const成员函数:任何不会修改数据成员的函数都应该声明为const。
const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。对后者只进行字符替换,没有类型安全检查,发生在预处理时期。同时对字符替换时可能发生意料不到的错误。
有些调式工具可以对const常量进行调试,却不能对宏常量进行调试。
用const修饰函数的参数,只能修饰输入参数
如果输入参数采用指针传递,加const可以防止意外的改动指针,起到保护作用。
如果输入参数采用值传递,由于函数将自动产生临时变量用于复制该参数,所以加const没有意义。
对于非内部数据类型的参数,如果不期望会改变参数本身,可以通过加const并以引用方式传递。
用const修饰函数的返回值
如果给以指针传递的方式的函数返回值加上const,表示该指针的内容不能更改。并只能被赋给const修饰的同类型指针。
如果函数以值传递的方式,那么加const没有任何意义,
函数返回值采用引用传递的场合并不多,一般值出现在类的赋值函数中,目地是为了实现链式操作
const成员函数:任何不会修改数据成员的函数都应该声明为const。
相关文章推荐
- [c++学习]const用法总结篇
- Thinking in C++ 学习笔记(1) 类中的const
- C++ 学习——const解析
- 学习C++笔记(引用、const、iterator)
- 【C/C++学习】之三、const_cast
- C++学习(4)--基础知识(4)--关于const
- C++学习笔记(二):使用const、static类成员的注意事项
- c++学习之const成员变量与成员函数
- C++学习之const
- c++学习笔记之函数重载与const的关系
- c++学习笔记-------const限定修饰符和引用
- C/C++中关于地址、指针和引用变量的学习笔记(六) : const和void
- c++ const 用法别人小结,我学习
- [C++学习] 对const变量的理解.
- C/C++学习笔记之const的学习
- C++学习笔记――const
- C++学习——const成员函数总结
- C++学习小记之static和const关键字
- C++学习笔记之const
- 【C学习笔记】【疑问】关于const常量的实现机制在C和C++中的不同