C++ const && define
2015-06-16 18:58
288 查看
本文记录了C++中的const关键字的内容,分为3个部分,const和define的区别,const的作用,const的使用。
const和define的区别
![](http://images0.cnblogs.com/blog/635602/201506/111013543634664.png)
const的作用
const用于定义常量:编译器可以进行静态数据类型的安全检查。
const修饰函数形式参数:当参数为自定义类型或抽象数据类型时,应该将“值传递”改为“const &传递”,可以提高效率,如下:
void fun(A a);效率低,函数体内产生A类型的临时对象用于复制参数a,临时对象的构造、复制、析构过程将消耗时间。
void fun(A const &a);效率极高。引用,不会产生临时对象,节省了时间,但是光引用有可能改变a的值,所以加const
const修饰函数的返回值:如,给“指针传递”的函数返回值加const,则返回值不能被直接修改,且这个返回值只能被赋值给加 const修饰的同类型指针。如下:
const char *GetChar(){}
char *ch = GetChar();//error
const char *ch = GetChar();//correct
const修饰类的成员函数(函数定义体):任何不会修改数据成员的函数都应该用const修饰,这样,当不小心修改了数据成员或调用了非const成员函数时,编译器会报错。 int GetChar(void) const;
实例代码:
![](http://images0.cnblogs.com/blog/635602/201506/111013557699433.png)
小结:在类成员函数的声明和定义中,const的函数不能对其数据成员进行修改操作。const的对象,不能引用非const的成员函数。
const的使用
const和define的区别
![](http://images0.cnblogs.com/blog/635602/201506/111013543634664.png)
const的作用
const用于定义常量:编译器可以进行静态数据类型的安全检查。
const修饰函数形式参数:当参数为自定义类型或抽象数据类型时,应该将“值传递”改为“const &传递”,可以提高效率,如下:
void fun(A a);效率低,函数体内产生A类型的临时对象用于复制参数a,临时对象的构造、复制、析构过程将消耗时间。
void fun(A const &a);效率极高。引用,不会产生临时对象,节省了时间,但是光引用有可能改变a的值,所以加const
const修饰函数的返回值:如,给“指针传递”的函数返回值加const,则返回值不能被直接修改,且这个返回值只能被赋值给加 const修饰的同类型指针。如下:
const char *GetChar(){}
char *ch = GetChar();//error
const char *ch = GetChar();//correct
const修饰类的成员函数(函数定义体):任何不会修改数据成员的函数都应该用const修饰,这样,当不小心修改了数据成员或调用了非const成员函数时,编译器会报错。 int GetChar(void) const;
实例代码:
![](http://images0.cnblogs.com/blog/635602/201506/111013557699433.png)
小结:在类成员函数的声明和定义中,const的函数不能对其数据成员进行修改操作。const的对象,不能引用非const的成员函数。
const的使用
![](http://images0.cnblogs.com/blog2015/635602/201507/100833124085855.png)
相关文章推荐
- 链式队列C++实现
- 约瑟夫问题 C语言循环链表
- Leetcode Merge Sorted Array 关于算法效率的思考
- C++开发者都应该使用的10个C++11特性
- C++基数排序(清楚明了完美详细的实现)
- 为游戏多开做准备,降低游戏的CPU
- float的内存布局
- c++ Builder 死机解决方法
- C++类中:作用
- C++ 自定义控件的移植(将在其它程序中设计的自定义控件,移植到现在的系统中)
- C++程序中获取不带文件路径和后缀的文件名
- c++ builder GroupBox的使用方法,如何把控件拖到TGroupBox上面
- 研究生本科生的创建C++链表
- C++带参数的类成员函数
- 您的服务器组件没有得到合法授权,服务器将会以受限模式运行
- C++中静态成员函数访问非静态成员变量
- 【C++ Primer Plus 9.3】名称空间
- 浅析C++中的this指针
- 《C语言 学生成绩管理系统》
- [LeetCode] Rectangle Area