在C++中,函数名前的const和函数名后的const有区别吗?

 我来答
yyrryyrr2
推荐于2017-10-14 · TA获得超过1120个赞
知道小有建树答主
回答量:296
采纳率:0%
帮助的人:449万
展开全部
有区别。

首先要知道函数名后面加const只能用于成员函数。

int const func(); //合法,相当于const int func();
int func2() const; //非法,对函数的const限定词只能用于成员函数

在成员函数中,const加在函数名前和后也是有区别的。
例如:
class A {
int const func();
int func() const;
};

int const A::func() { return 0; }
int A::func() const { return 0; }

上面的代码是合法的,其中A::func成员函数是一个重载成员函数,两个函数都返回int类型数据(注意:对于C/C++,返回类型或参数类型中,const int和int被认为是一种类型。但是const int *和int *不是一种类型),这两个重载函数正是基于函数名后的const来重载的。
int const func();表示该成员函数的隐藏this指针参数是A * const类型的;而int func() const;表示该重载成员函数的隐藏this指针参数是A const * const类型的.

A * const类型和A const * const类型是不同类型,因此可以重载。
由此可见const放在函数名后和名前是不同的
shebeyond0
2010-09-19 · TA获得超过158个赞
知道答主
回答量:165
采纳率:0%
帮助的人:121万
展开全部
const int *a; 指向的变量不可修改 指针可修改
int *consta; 指向的变量值可变 指针不可改变
看const在*的 左面还是右面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
李子风1997
2010-09-18 · 超过10用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:0
展开全部
没有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式