c++中的const
2016-07-20 13:29
267 查看
先吐槽一下,C++你还能更复杂一点吗?尤其是学习了java之后,c++怎么那么事多啊。
1 为什么引入const
不用const,C++语言完全能够实现所有功能。const 只是增加一个约束条件,帮助程序员增加代码约束。
2 cons t的用法总结:
1)常量: 后面可以加基本类型,对象,指针,引用
2)const 代替#define来定义常量
3)常量函数 getValue() const: 防止误修改了类成员值
3 const容易出问题的地方
1)const引用
const引用可以指向 const常量,变量,兼容的其他的类型的变量
non const引用只能指向 变量
We can use a nonconst object to initializer either a const or nonconst reference. However, initializing aconst reference to a nonconst object requires a conversion, whereas initializing a nonconst
parameter is an exact match.
![](https://img-blog.csdn.net/20160721091740284?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
const引用指向不同类型的对象的时候,只能读对象的值,不能写对象的值。写也是改写了临时变量的值,不会改变原始变量的值。
2) 作为函数签名:
const可以修饰入参,返回值,函数。
const修饰入参是引用或者指针的时候,可以作为函数签名重载;const入参是值传递的时候,不可以作为函数签名重载;
const修饰返回值的时候,不能重载
const函数能重载,是因为编译器把const函数变为 (const T *this, ...)
3)const对象调用函数
const对象调用函数只能调用const函数
non const对象既可以调用non const函数,也可以调用const 函数。但是优先调用non const函数。
4) 常量函数返回值也是常量
getValue()const{return p;} p是类的成员变量,但是用const函数后,返回值p是常量了。 如果返回一个引用,那么必须用const修饰
int& getValue()const{return p;} //p 是int型, 错误,必须返回const int &
const Parent getValue()const{return p;} // p是parent型。 错误,必须返回const Parent &
1 为什么引入const
不用const,C++语言完全能够实现所有功能。const 只是增加一个约束条件,帮助程序员增加代码约束。
2 cons t的用法总结:
1)常量: 后面可以加基本类型,对象,指针,引用
2)const 代替#define来定义常量
3)常量函数 getValue() const: 防止误修改了类成员值
3 const容易出问题的地方
1)const引用
const引用可以指向 const常量,变量,兼容的其他的类型的变量
non const引用只能指向 变量
We can use a nonconst object to initializer either a const or nonconst reference. However, initializing aconst reference to a nonconst object requires a conversion, whereas initializing a nonconst
parameter is an exact match.
const引用指向不同类型的对象的时候,只能读对象的值,不能写对象的值。写也是改写了临时变量的值,不会改变原始变量的值。
2) 作为函数签名:
const可以修饰入参,返回值,函数。
const修饰入参是引用或者指针的时候,可以作为函数签名重载;const入参是值传递的时候,不可以作为函数签名重载;
const修饰返回值的时候,不能重载
const函数能重载,是因为编译器把const函数变为 (const T *this, ...)
3)const对象调用函数
const对象调用函数只能调用const函数
non const对象既可以调用non const函数,也可以调用const 函数。但是优先调用non const函数。
4) 常量函数返回值也是常量
getValue()const{return p;} p是类的成员变量,但是用const函数后,返回值p是常量了。 如果返回一个引用,那么必须用const修饰
int& getValue()const{return p;} //p 是int型, 错误,必须返回const int &
const Parent getValue()const{return p;} // p是parent型。 错误,必须返回const Parent &
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C++的template模板中class与typename关键字的区别分析
- C与C++之间相互调用实例方法讲解