函数后面加const的作用?

LAST_MAN 2012-01-21 08:13:01
比如一个成员函数 int abc(int&)const{ },说是不能改变任何成员,这个任何成员是指private成员还是
说 int abc (int&) const { int a=5; return a;} 然后a的值不允许修改了??
请高手举个简单例子说明下吧
...全文
158 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CppDisciple2 2012-01-22
  • 打赏
  • 举报
回复
成员函数声明处的const修饰符是告诉编译器,这个函数不会修改所在类的任何成员的值,除了带mustable前缀的成员。
qualcode 2012-01-21
  • 打赏
  • 举报
回复
网上很多资料啊,百度一下啊,
http://www.cnblogs.com/BloodAndBone/archive/2011/04/12/2013280.html
http://bbs.chinaunix.net/thread-300602-1-1.html
iamnobody 2012-01-21
  • 打赏
  • 举报
回复
后面的const修饰的是this指针参数。
pathuang68 2012-01-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 last_man 的回复:]
比如一个成员函数 int abc(int&)const{ },说是不能改变任何成员,这个任何成员是指private成员还是
说 int abc (int&) const { int a=5; return a;} 然后a的值不允许修改了??
请高手举个简单例子说明下吧
[/Quote]

一个成员函数后面如果跟了const,那么这个成员函数就不能修改类中的成员变量。比如

class A
{
private:
int aValue;
public:
A()
{
}

A(int a)
{
aValue = a;
}

void setA(int a) const // 成员函数后面跟了const,同时企图修改成员变量aValue,通不过编译
{
aValue = a;
}

void setA(int a) // 这样则是可以的
{
aValue = a;
}
};


最后一点需要注意的是,哪怕成员函数所有的,比如返回类型,函数名称,参数类型都一样,但后面加不加const都会形成重载,比如:

int getA() const
{
return aValue + 1;
}

int getA()
{
aValue++;
return aValue;
}

上面两个函数除了最后的const外,没有任何其它区别,但它们是不同的函数重载:上面那个不能修改成员变量,而下面那个则可以。
zoelva 2012-01-21
  • 打赏
  • 举报
回复
修饰隐含的this指针,表明不能使用this指针改变对象
wintree 2012-01-21
  • 打赏
  • 举报
回复
int abc(int&)const{ }---------函数不能对成员变量修改。

成员变量,什么是成员变量?就是一个类的成员变量啊。。不管他是什么修饰。那个a是局部变量。

waterbright 2012-01-21
  • 打赏
  • 举报
回复
应该是不能改变类得数据成员,函数内部的局部变量不算。

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧