const用法总结
来源:互联网 发布:美国宏观经济数据 编辑:程序博客网 时间:2024/05/22 03:20
const修饰的常成员函数可以理解为是一个“只读”函数。
如果一定要修改常对象中的每个数据成员的值,对该数据成员函数声明为mutable,如:
mutable int count;
把count声明为可变数据成员,即可改变。
const修饰指针
情况1:
const位于*号左边,const修饰指针所指向的变量,即指针指向为常量,可以先不进行初始化;
int b = 500;const int *a = &b;int const *a = &b;//指针所指向的内容为常量,内容不能被改变int b = 500;const int *a = &b;*a = 600; // 错误//改变的方法int b = 500;const int *a = &b;b = 600;//或者int b = 500, c = 600;const int *a = &b;a = &c;
情况2:
const 位于*号右边,const修饰指针本身,即指针本身是常量,定义时必须同时进行初始化;
int b = 500;int * canst a = &b;//指针本身是常量,但指针指向的内容不是常量;int b = 500;int * const a;//错误,未初始化int * const a = &b;*a = 600;//正确,允许改值cout<<a++<<endl;//错误
情况3:
*号两边均有const修饰,指针本身和指向的内容均为常量,均不能改变,定义时必须同时进行初始化!
int b = 500;const int * canst a = &b;
const成员函数实例:
class Point{ int xVal, yVal;public: int GetY() const;};//关键字const必须用同样的方式重复出现在函数实现中int Point::GeyY() const{ return yVal;}
面试·const与#define的区别:
C++可以用const定义常量,也可以用#define定义常量,但是前者比后者有更多优点:
- const 常量有数据类型,而宏常量没有。编译器对前者进行类型安全检查,而后者只是进行字符替换,没有类型安全检查,且在字符替换中可能产生错误(边际效应);
- 有些集成化的调试工具可以对const常量进行调试,但不能对宏常量进行调试。在c++中const常量完全取代宏常量。
参考:
程序员面试宝典
C++面向对象程序设计
阅读全文
0 0
- const用法总结
- Const用法总结
- const 用法总结
- C++ const用法总结
- const 用法总结
- const 用法总结c++
- C++ Const 用法总结
- c++ const用法总结
- const 用法总结
- const 用法总结
- const用法总结
- const用法简单总结
- const 用法总结(一)
- const 用法总结(二)
- const用法总结
- const用法总结
- C++ Const 用法总结
- Const 用法总结
- JStree的使用总结
- Andorid版本更新
- 阿里巴巴的一个笔试题
- Spring整合Web项目原理
- hdu6188-贪心
- const用法总结
- Activity的四种launchMode
- 注解@PostConstruct 与 @ PreDestory 的作用
- 本题要求实现一个函数,对给定的正整数N,打印从1到N的全部正整数。
- 试密码(PAT-1067)
- 项目实训总结报告
- 字符串排序
- SQL索引
- Your project path contains non-ASCII characters 解决办法