c++ 在函数后加const
的意义:
我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值。如果把不改变数据成员的函数都加上const
关键字进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,已定义成const
的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。 const
成员函数和const
对象 实际上,const
成员函数还有另外一项作用,即常量对象相关。对于内置的数据类型,我们可以定义它们的常量,用户自定义的类也一样,可以定义它们的常量对象。
1、非静态成员函数后面加const
(加到非成员函数或静态成员后面会产生编译错误)
2、表示成员函数隐含传入的this
指针为const
指针,决定了在该成员函数中, 任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this
指针的const
引用);
3、唯一的例外是对于mutable
修饰的成员。 加了const
的成员函数可以被非const
对象和const
对象调用,但不加const
的成员函数只能被非const
对象调用
char getData() const{return this->letter;}
- c++ 函数前面和后面 使用
const
的作用:
前面使用const
表示返回值为const
后面加const
表示函数不可以修改class的成员
请看这两个函数:
const int getValue();
int getValue2() const;
/*
* FunctionConst.h
*/
#ifndef FUNCTIONCONST_H_
#define FUNCTIONCONST_H_
class FunctionConst {
public:
int value;
FunctionConst();
virtual ~FunctionConst();
const int getValue();
int getValue2() const;
};
#endif /* FUNCTIONCONST_H_ */
/*
* FunctionConst.cpp
*/
#include "FunctionConst.h"
FunctionConst::FunctionConst():value(100) {
// TODO Auto-generated constructor stub
}
FunctionConst::~FunctionConst() {
// TODO Auto-generated destructor stub
}
const int FunctionConst::getValue(){
return value;//返回值是 const, 使用指针时很有用.
}
int FunctionConst::getValue2() const{
//此函数不能修改class FunctionConst的成员函数 value
value = 15;//错误的, 因为函数后面加 const
return value;
}
网友评论