const关键字的用法
来源:互联网 发布:求剑若此不亦惑乎 编辑:程序博客网 时间:2024/04/30 19:24
一 概述
被const修饰的变量都是只读的,当你的程序改变其值的时候,编译器会报错。const一般用来修饰变量,函数的参数,返回值和函数本身等。
1.1 修饰变量
const int a = 10; //定义一个const的int变量const char * p = "hello world"; //const字符串char * const p = "hello world"; //const指针pconst char * const p = "hello world"; //指向const字符串的const指针p1.2 函数参数
const只能修饰输入参数:输入参数采用指针传递的时候,使用const可以防止意外改变指针所指的值,比如 void strcopy( char * strdest, const char * strsrc);
如果参数是值传递的话,那么就不用加上const修饰了,因为值传递的原理是申请一个临时的变量,将参数赋值给该变量,因此对临时变量的操作不会影响到原来变量的值。
对于非内部数据类型的变量:void func(String a),如果不采用引用传递的话,函数效率很低,会调用函数的构造函数和析构函数来建立一个临时的String对象,加了引用后,如果程序中要改变参数的话,这样是不行的,我们需要加上const,正确的形式为:void func(const String &a)。对于内部数据直接值传递就好了,因为不会有构造函数和析构函数的产生。
1.3 返回值
(1)如果给采用指针传递的方式的函数返回值加const修饰,那么函数返回值(即指针)的内容不能修改,该返回值只能赋值给加了const修饰的同类型指针。
const char * GetString(void);
const char * p = GetString();
(2) 如果函数采用了值传递的方式,那么不需要加const,因为函数会把返回值复制到外部临时的存储单元中。
int GetInt(void) 错误的形式:const int GetInt(void)
(3) 函数采用引用传递的场合不多,这种方式一般只出现在类的赋值函数中,是为了方便连续赋值。
String strOne, strTwo, strThree;
strOne = strTwo = strThree;
1.4 cosnt成员函数
任何不会修改数据成员的函数应该声明为const类型,在const函数中修改了成员变量或者调用了非const函数,编译器都会报错。
class Stack{public:void Push(int a);int Pop(void);int GetCount(void) const;private:int m_num;int m_data[5];};int Stack::GetCount(void) const{Push(1); //非const函数++m_num; // 改变成员变量的值 return m_num; }
用好了const可以给你的程序带来很好的健壮性和高效率性
- const关键字的用法
- const关键字的用法
- const关键字的用法
- Const关键字的用法
- const关键字的用法
- const关键字的用法
- const关键字的用法
- const关键字的用法
- const关键字的深度用法
- 关于C++中的const关键字的用法
- C++关键字Const的用法小结
- C++中的const关键字的用法
- C++ 关键字 const 的用法小结
- .const与volatile关键字的用法
- const关键字的用法总结(多篇文章)
- static和const关键字的用法
- C语言关键字const的用法
- C++中const关键字的用法
- ZedGraph
- 制作根文件系统
- 不要对知识与技术的遗忘感到焦虑
- 第五周实验报告 任务一
- 经典SQL语句大全
- const关键字的用法
- 多文件组织项目
- JS自动生成三级级联菜单
- h264解码器,s3c6410硬件mfc解码分析-H264
- STL list链表的用法详解
- 深入探讨MFC消息循环和消息泵
- STL vector 容器介绍
- 字符编码方式介绍
- 详解U-Boot中printf函数的实现