[C++]常成员函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[C++]常成员函数
1.常成员函数声明:
const成员函数也就是常成员函数,它的声明形式:
返回类型成员函数名(参数表) const ;
例如: int function(int x) const ;
易混淆的地方: const 的位置:
》函数开头的const 用来修饰函数的返回值,表示返回值是const 的,也就是不能被修改,例如const char * getname()。

》函数头部的结尾加上const 表示常成员函数,这种函数只能读取成员变量的值,而不能修改成员变量的值,例如char * getname() const。

2.常成员函数的主要特点:
1)不能更新类的成员变量
2)不能调用该类中没有用const修饰的成员函数,即只能调用常成员函数
3)可以被类中其它的成员函数调用
4)常对象只能调用常成员函数,而不能调用其他的成员函数。

-------------------------------------------------例子1-----------------------------------------
class CDate
{
public:
//常成员函数
int year() const{ return y; }
int month() const{
//m++; //错误:1)常成员函数中不能更新类的数据成员return m;
//普通成员函数
int day(){return d++ ;}
int AddYear(int i){ return y+1; }
private:
int y;
int m;
int d;
};
int main()
{
CDate const date; //常对象
//int day = date.day(); // 4)错误常对象不能调用非常成员函数int year = date.year(); //正确
}
-------------------------------------------------例子2-----------------------------------------
class A{
private:
int w,h;
public:
int getValue() const{ //常成员函数
return w*h + getValue2(); //2)错误。

只能调用常成员函数。

int getValue2(){ //普通成员函数
return w+h+getValue(); //3)正确。

常成员函数可以被其它成员函数调用
}
A(int x,int y){
w=x,h=y;
}
A(){}
};
3.其它注意事项
1)const关键字可以用于对重载函数的区分
class Calculate{
private:
int x,y;
public:
Calculate(){}
Calculate(int a,int b)
{
x=a,y=b;
}
int calc() const //常成员函数
{
return x*y;
}
int calc(){ //函数名称相同的非常成员函数
return x+y;
}
};
void main()
{
Calculate const a(2,3); //常对象
Calculate b(2,3); //普通对象
cout<<a.calc(); //调用int calc() const;输出6
cout<<b.calc(); //调用int calc() ;输出5
}
2)const是函数类型的一部分,在实现部分也要带const。

class Calculate{
private:
int x,y;
public:
Calculate(){}
Calculate(int a,int b)
{
x=a,y=b;
}
int calc() const ; //声明常成员函数
};
//类外定义(实现)
int Calculate::calc() const //常成员函数
{
return x*y;
}
参考
《c++ Primer》
《c++ Primer》
https:///navymei10220214/article/details/828 89125
https:///navymei10220214/article/details/828 89125
h/view/2230.html
/view/2230.html
/view/2230.html
https:///97-5-1/p/8665483.html
https:///97-5-1/p/8665483.html
https:///97-5-1/p/8665483.html
https:///97-5-1/p/8665483.html。

相关文档
最新文档