社区
新手乐园
帖子详情
函数名和{}中间的const是用来修饰什么的?
zjumty
2007-04-13 10:06:33
最近在学C++,在书上看到有类似这样的语句:
const ResultType func_name(const Type &arg) const { .... }
一个语句中3个const.
第一个const用来修饰返回值
第二个const用来修饰参数值
那么第三个const用来修饰什么呢?
PS. 感觉C++比Java复杂多了!
...全文
445
15
打赏
收藏
函数名和{}中间的const是用来修饰什么的?
最近在学C++,在书上看到有类似这样的语句: const ResultType func_name(const Type &arg) const { .... } 一个语句中3个const. 第一个const用来修饰返回值 第二个const用来修饰参数值 那么第三个const用来修饰什么呢? PS. 感觉C++比Java复杂多了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lisheng053758
2007-04-17
打赏
举报
回复
3.func_name(……) const :方法不可以修改调用它的对象的成员
lisheng053758
2007-04-17
打赏
举报
回复
第一个const 说明函数的返回值为常ResultType类型
第二个const 说明函数的参数为常Type的引用
第三个const 说明 func_name函数是一个类的const成员函数
只有const成员函数可以被const对象调用
编译器不容许const对象调用非const成员函数
飞哥
2007-04-17
打赏
举报
回复
const在拿,哪的值不让改就是了
guanwl
2007-04-16
打赏
举报
回复
那个const就象是java中的final函数.
不比java复杂呀.
你不会没用过java的final关键字吧.
balloonpig
2007-04-14
打赏
举报
回复
1.func_name(const Type &arg):在函数作用域中,不可以修改arg
2.const ResultType func_name(……):返回值不可以被修改
3.func_name(……) const :方法不可以修改调用它的对象
goodgod105
2007-04-13
打赏
举报
回复
mark
zjumty
2007-04-13
打赏
举报
回复
多谢各位!!
lidongri
2007-04-13
打赏
举报
回复
const ResultType func_name(const Type &arg) const { .... }
==========================================================
const ResultType:
函数返回一个const量
const Type &arg
函数内部对实参认为是const量,不修改其值
const { .... }
用于类的成员函数,说明成员函数不修改类的数据成员,okokok
xlbdan
2007-04-13
打赏
举报
回复
const ResultType func_name(const Type &arg) const
这个是一个返回值为const ResultType 类型的const成员函数
三个const的作用不一样
第一个是修饰返回值的,返回的是一个const ResultType ,也就是说,返回值不可以修改
例如
ResultType a,b; //定义两个对象
a.func_name()=b; //a.func_name()的返回值是ResultType类型的常对象,也
//就是一个const ResultType 所以对它进行赋值,a.func_name()=b,
//是非法的
第二个const是用来修饰形参的,const Type &arg表示arg是实参的一个常引用,那么在func_name这个函数里对arg进行任何修改都将是错误的
第三个const是用来表示该成员函数不能修改数据成员的,例如这个类里有一个成员叫int data;
那么
const func_name func_name() const
{
data++; //这是非法的,const成员函数不可以对数据成员做修改
}
walkingstick
2007-04-13
打赏
举报
回复
LZ,楼上的高手讲的很详细了哦~~~~~~~~
todototry
2007-04-13
打赏
举报
回复
const ResultType func_name(const Type &arg) const { .... }
==========================================================
const ResultType:
函数返回一个const量
const Type &arg
函数内部对实参认为是const量,不修改其值
const { .... }
用于类的成员函数,说明成员函数不修改类的数据成员,okokok
iu_81
2007-04-13
打赏
举报
回复
几点规则:
a.const对象只能访问const成员函数,而非const对象可以访问任意
的成员函数,包括const成员函数.
b.const对象的成员是不可修改的,然而const对象通过指针维护的对象却
是可以修改的.
c.const成员函数不可以修改对象的数据,不管对象是否具有const性质.它在
编译时,以是否修改成员数据为依据,进行检查.
e.然而加上mutable修饰符的数据成员,对于任何情况下通过任何手段
都可修改,自然此时的const成员函数是可以修改它的…
ouyh12345
2007-04-13
打赏
举报
回复
在函数内,不应改变参数的内容
wangzhangyong411
2007-04-13
打赏
举报
回复
第一个是修饰返回值是个不能被变化的
第二个是说,参数是不能被变化的
第三个是说 如果这个函数在类里面 那么这个类里面的值不能被变化
SF
iu_81
2007-04-13
打赏
举报
回复
修饰类成员函数
VS编译器C/C++
函数
编译后的
名
字
修饰
函数
的
名
字
修饰
(Decorated Name)就是编译器在编译期间创建的一个字符串,用来指明
函数
的定义或原型。 目的是方便编译过程中,链接器等
中间
过程识别不同的
函数
,尤其是在引入重载后,识别
函数
不能只看
函数
名
,要结合参数、返回值类型来识别。 C和C++程序的
函数
在内部使用不同的
名
字
修饰
方式,下面将分别介绍。 C
函数
名
修饰
C不存在
函数
重载,主要需要在
函数
修饰
中体现出
函数
的调用约定: __stdcall:
函数
名
前加上一个下划线前缀,
函数
名
后面加上一个“@”符号和其参数的字节数,例如_functionna
C++基础之关键字——
const
,volatile,mutable,auto,register,static,extern
const
const
表示所限定的描述符是不可变的。
const
主要的应用场景有
修饰
变量、
修饰
指针、
修饰
函数
参数、
修饰
类的成员
函数
、
修饰
数据成员、
修饰
类的对象,
const
修饰
函数
返回值。下面分别说明一下:
修饰
变量
const
int a; int
const
a; 两种方式效果相同,都表示变量a是一个常量是不可变的。
修饰
指针 与
修饰
变量类似有两种写法,但是意义不同:
const
int * p; int *
const
p;
const
int *
const
p; 第一种写法意思是: 创建的指针a
【C++
const
与非
const
、左值与右值、移动语义】
一、左值、右值 左值是可以出现在等号表达式左边也可以出现在右边,右值是只能出现在等号表达式的右边。 有什么区别呢?明显的来说,等号表达式左边是可以被赋值的也就是可以被修改的,那么类似于常量这种,是不能放在左边的,只能放在右边;右值是不能被修改的,但是对于自定义类型来说,可以通过成员
函数
进行修改。 3=a; ...
C++
const
关键字总结
const
在 C++ 中是用来
修饰
内置类型变量,自定义对象,成员
函数
,返回值,
函数
参数。 一、
const
修饰
普通类型的变量
const
int a = 7; int b = a; // 正确 a = 8; // 错误,不能改变 a 被定义为一个常量,并且可以将 a 赋值给 b,但是不能给 a 再次赋值。 #include<iostream> using namespace std; int main(void) {
const
int a = 7;
【C++】超详细入门 —— 一文带你搞懂
const
限定符
全面讲解
const
限定符
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章