const用法大集合
来源:互联网 发布:手机常用的网络制式 编辑:程序博客网 时间:2024/06/16 07:55
C++中的const应用的很灵活,const也大大改善程序的健壮性,下面就const在C++中的各种用法,做一个总结
const的使用地方
1.定义常量
(1)const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的
TYPE const ValueName = value; const TYPE ValueName = value;
在定义一个变量时用了const,就是常量了,在之后不能改变其值。
有的时候需要使用const变量,他的初始值不是一个常量表达式,但又确实有必要在文件中共享,这种情况下我们不希望编译器为每一个文件分别生成独立的变量,相反的,我们希望这类const对象像其他(非常量)对象一样工作,也就是说,只要在一个文件中定义了const,而在其他的文件中声明并使用它。
解决的办法是:对于const变量不管是申明还是定义都加extern关键字,定义一次就可以了
extern const int bufSize = fcn() //一个文件中extern const int bufSize //和上面定义的bufSize是同一个
注意:默认状态下,const对象仅在文件内有效
const对象在定义时必须初始化,因为const对象在创建后就不能更改它的值
2、指针使用CONST
(1)指针本身是常量不可变
char* const p;
这个用const来修饰p,说明指针本身定为常量,常量指针必须初始化,而且一旦初始化,则它的值(也就是存放在指针里的地址)就不再改变的了
(2)指针所指向的内容是常量不可变
const char *p;
(3)两者都不可变
const char* const p;
顶层const和底层const
顶层const表示指针本身是个常量
底层const表示指针所指的对象是一个常量
int i= 0int *const p1 = &i //不能改变p1的值,是顶层constconst int ci = 42 //不能改变ci的值,是顶层constconst int *p2 = &ci //能改变p2的值,是底层const
(4)还有其中区别方法,沿着*号划一条线:
如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。
3.const修饰函数系列
1)const修饰函数参数
传递过来的参数在函数内不可以改变,与上面修饰变量时的性质一样
void testModifyConst(const int _x) { _x=5; ///编译出错}
2).const修饰成员函数
(1)const修饰的成员函数不能修改任何的成员变量(mutable修饰的变量除外)
(2)const成员函数不能调用非onst成员函数,因为非const成员函数可以会修改成员变量
#include <iostream> using namespace std; class Point{ public : Point(int _x):x(_x){} void testConstFunction(int _x) const{ ///错误,在const成员函数中,不能修改任何类成员变量 x=_x; ///错误,const成员函数不能调用非onst成员函数,因为非const成员函数可以会修改成员变量 modify_x(_x); } void modify_x(int _x){ x=_x; } int x; };
3).const修饰函数返回值
(1)指针传递
如果返回const data,non-const pointer,返回值也必须赋给const data,non-const pointer。因为指针指向的数据是常量不能修改
const int * mallocA(){ ///const data,non-const pointer int *a=new int(2); return a; } int main() { const int *a = mallocA(); ///int *b = mallocA(); ///编译错误 return 0; }
- const用法大集合
- Android 多线程用法大集合
- winform中 datagridview用法大集合
- const用法
- const用法
- const用法
- const用法
- const用法
- const 用法
- const用法
- const 用法
- const用法
- const用法
- const用法
- const用法
- const用法
- const用法
- CONST用法
- centos搭建maven私服
- mongoDB 启动与停止
- PullToRefreshListView注意事项
- 来自2016年上半年的.ISO
- java.lang.IllegalArgumentException 错误
- const用法大集合
- Unity视频播放插件(AVPro Windows Media)
- 一些好的Android开发习惯
- iOS添加导航栏的三种方式
- golang包引入
- PHP Workerman框架。用来做php socket服务器的代码
- 自写聊天室_LinuxC实现(1)——项目部署遇到问题及解决方法
- 内部类
- CSR8670的DFU功能