const在函数和方法上的防修改作用
2017-06-15 14:08
453 查看
const参数,除了之前在日志《【备忘】const与#define》提到做定义常量的用途外,还有防止在函数方法中修改参数值的用途。
函数:
函数有一个参数,将参数定义为const参数(即常量参数) ,则在函数内部不能对参数进行修改。
For example:(书上看到的例子,照搬下来)
如果在OutputNumber函数中修改参数nNumber的值。将导致编译错误!
方法:
在定义方法时,使用const关键字,则不能对const成员函数中的类数据成员进行修改。
For example:(书上看到的例子,照搬下来)
如果在GetUsername方法中修改类数据成员m_Username的值,则会出现编译错误!
注:如果用户非要在const成员函数中修改某一个数据成员,可以在定义数据成员时使用mutable关键字。
For example:
函数:
函数有一个参数,将参数定义为const参数(即常量参数) ,则在函数内部不能对参数进行修改。
For example:(书上看到的例子,照搬下来)
void OutputNumber(const int nNumber) { cout << nNumber << endl; }
如果在OutputNumber函数中修改参数nNumber的值。将导致编译错误!
void OutputNumber(const int nNumber) { nNumber = 20; //不能够修改nNumber参数 cout << nNumber << endl; }
方法:
在定义方法时,使用const关键字,则不能对const成员函数中的类数据成员进行修改。
For example:(书上看到的例子,照搬下来)
class CUser { private: char m_Username[128]; public: char* GetUsername() const { return (char*)m_Username; } }
如果在GetUsername方法中修改类数据成员m_Username的值,则会出现编译错误!
class CUser { private: char m_Username[128]; public: char* GetUsername() const { strcpy(m_Username, 'KJ'); //在const方法中不能修改成员函数 return (char*)m_Username; } }
注:如果用户非要在const成员函数中修改某一个数据成员,可以在定义数据成员时使用mutable关键字。
For example:
mutable char m_Username[128];
相关文章推荐
- const在函数和方法上的防修改作用
- 函数后面的const的作用
- 函数声明尾加const的作用
- 类成员函数中的const不同位置的作用
- 非静态成员函数后面的const作用
- const在函数中的作用
- 拦截API(修改函数地址方法)
- C++修改入口函数名Main的方法
- const作为函数返回值的作用
- vc++工程中.def文件的作用和动态库导出函数的方法.
- jsp页面中调用某个新写的或者修改的方法,虽然函数没任何问题,但是编译不通过
- c# 函数的方法和作用域
- C#修改注册表的方法与函数
- 修改const常量的方法
- JavaScript 内部函数作用域问题及解决方法
- Const 修饰成员函数的作用
- 修改const常量的方法
- ini_set()函数的使用 以及 post_max_size,upload_max_filesize的修改方法
- HTML的修改css的修改以及动画完成后,执行某个函数方法
- 安卓关于system/build.prop文件作用以及修改方法