C++ const
来源:互联网 发布:算法工程师自学 编辑:程序博客网 时间:2024/06/05 02:10
1、定义常量
(1)const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。
TYPE const ValueName = value;
const TYPE ValueName = value;
(1)指针本身是常量不可变
char* const pContent;
(2)指针所指向的内容是常量不可变
const char *pContent;
(3)两者都不可变
const char* const pContent;
(4)还有其中区别方法,沿着*号划一条线:
如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。
3、函数中使用CONST
(1)const修饰函数参数
a.传递过来的参数在函数内不可以改变(无意义,因为Var本身就是形参)
void function(const int Var);
b.参数指针所指内容为常量不可变
void function(const char* Var);
c.参数指针本身为常量不可变(也无意义,因为char* Var也是形参)
void function(char* const Var);
d.参数为引用,为了增加效率同时防止修改。修饰引用参数时:
void function(const Class& Var); //引用参数在函数内不可以改变
void function(const TYPE& Var); //引用参数在函数内为常量不可变
将Const类型转化为非Const类型的方法
采用const_cast 进行转换。
用法:const_cast <type_id> (expression)
该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和expression的类型是一样的。
· 常量指针被转化成非常量指针,并且仍然指向原来的对象;
· 常量引用被转换成非常量引用,并且仍然指向原来的对象;
· 常量对象被转换成非常量对象。
主要是用来去掉const属性,当然也可以加上const属性。主要是用前者,后者很少用。
去掉const属性:const_case<int*> (&num),常用,因为不能把一个const变量直接赋给一个非const变量,必须要转换。
(1)const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。
TYPE const ValueName = value;
const TYPE ValueName = value;
(2)将const改为外部连接,作用于扩大至全局,编译时会分配内存,并且可以不进行初始化,仅仅作为声明,编译器认为在程序其他地方进行了定义.
extend const int ValueName = value;
(1)指针本身是常量不可变
char* const pContent;
(2)指针所指向的内容是常量不可变
const char *pContent;
(3)两者都不可变
const char* const pContent;
(4)还有其中区别方法,沿着*号划一条线:
如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。
3、函数中使用CONST
(1)const修饰函数参数
a.传递过来的参数在函数内不可以改变(无意义,因为Var本身就是形参)
void function(const int Var);
b.参数指针所指内容为常量不可变
void function(const char* Var);
c.参数指针本身为常量不可变(也无意义,因为char* Var也是形参)
void function(char* const Var);
d.参数为引用,为了增加效率同时防止修改。修饰引用参数时:
void function(const Class& Var); //引用参数在函数内不可以改变
void function(const TYPE& Var); //引用参数在函数内为常量不可变
将Const类型转化为非Const类型的方法
采用const_cast 进行转换。
用法:const_cast <type_id> (expression)
该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和expression的类型是一样的。
· 常量指针被转化成非常量指针,并且仍然指向原来的对象;
· 常量引用被转换成非常量引用,并且仍然指向原来的对象;
· 常量对象被转换成非常量对象。
主要是用来去掉const属性,当然也可以加上const属性。主要是用前者,后者很少用。
去掉const属性:const_case<int*> (&num),常用,因为不能把一个const变量直接赋给一个非const变量,必须要转换。
加上const属性:const int* k = const_case<const int*>(j),一般很少用,因为可以把一个非const变量直接赋给一个const变量,比如:const int* k = j;
转载:http://blog.csdn.net/Eric_Jo/article/details/4138548
http://www.cnblogs.com/xudong-bupt/p/3509567.html
0 0
- const c
- const【C++】
- const ||c
- C++Const
- [c++]const
- C++:const
- const用法(C/C++)
- C++/C const问题
- 【c/c++】const引用
- readonly vs. const [C#]
- C++(二)const
- C语言const介绍
- C语言const介绍
- readonly vs. const [C#]
- readonly vs. const [C#]
- c++:const 操作小结
- readonly vs. const [C#]
- C中的CONST
- ubuntu上修改root密码
- JAVA WEB之Spring4.x JdbcTemplate
- 实现KNN(K近邻平滑滤波器)
- go语言之数组和切片的一些用法比较
- openssl speed md5 测试md5的performance
- C++ const
- 5/12 cnn 手写字体识别代码学习笔记
- Spark学习—统计文件单词出现次数
- Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) C Fountains 乱搞
- Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题
- computed与methods的异同
- 从源码来看ItemTouchHelper实现RecyclerView列表的拖拽和侧滑
- 调度脚本
- unsigned和signed、const和define的区别