社区
新手乐园
帖子详情
请问类里的const成员函数问题
discory
2006-04-06 06:55:44
exp:
class A
{
public:
a();
A x() const{i+=4};//这里,const怎么理解
...
private:
i;
}
const不是定义一个常量吗,这里const是对x()的直不变吗。不太明白.
...全文
169
9
打赏
收藏
请问类里的const成员函数问题
exp: class A { public: a(); A x() const{i+=4};//这里,const怎么理解 ... private: i; } const不是定义一个常量吗,这里const是对x()的直不变吗。不太明白.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
discory
2006-04-07
打赏
举报
回复
哦,明白,就是对调用数据成员,数据成员的直是const,对吗,就是i的直不能改变,
那么我这个程序是错的
jixingzhong
2006-04-07
打赏
举报
回复
const不是定义一个常量吗,这里const是对x()的直不变吗。不太明白.
------------------------------
不是对 x()的直不变 ,
是对这个类的数据成员的值不变 ....
AllenCpp
2006-04-07
打赏
举报
回复
你这里的语法是错误的
因为有const 修饰,所以不能修改变量i
rickerliang
2006-04-07
打赏
举报
回复
当你初始化一个const对象时,只能调用该对象的const成员函数,所以不改变对象内数据成员的值的成员函数一般声明为const
sankt
2006-04-06
打赏
举报
回复
常成员函数
使用const关键字进行说明的成员函数,称为常成员函数。只有常成员函数才有资格操作常量或常对象,没有使用const关键字说明的成员函数不能用来操作常对象。常成员函数说明格式如下:
<类型说明符> <函数名> (<参数表>) const;
其中,const是加在函数说明后面的类型修饰符,它是函数类型的一个组成部分,因此,在函数实现部分也要带const关键字。下面举一例子说明常成员函数的特征。
#include
class R
{
public:
R(int r1, int r2) { R1=r1; R2=r2; }
void print();
void print() const;
private:
int R1, R2;
};
void R::print()
{
cout< }
void R::print() const
{
cout< }
void main()
{
R a(5, 4);
a.print();
const R b(20, 52);
b.print();
}
该例子的输出结果为:
5,4
20;52
该程序的类声明了两个成员函数,其类型是不同的(其实就是重载成员函数)。有带const修饰符的成员函数处理const常量,这也体现出函数重载的特点。
逸学堂
2006-04-06
打赏
举报
回复
class A
{
public:
a();
A x() const{i+=4};//这里,const怎么理解
// 简单的说这里的const防止在x函数内修改类A内变量i。
// 其具体操作是加到const函数(必须是类内函数才有效)
// 类内函数都有一个this指针,其实这个const是加到this身上的
// 所以this内的变量不可修改,具体参考
// www.exuetang.net内关于《深入讨论this指针》有更纤细的讨论
...
private:
i;
}
khzhang
2006-04-06
打赏
举报
回复
防止修改成员函数
相似的有:const A x() 这代表函数返回值为常量
minico
2006-04-06
打赏
举报
回复
你那个例子应该是个说明是个错误的例子,
就是为了说明const成员函数不能改变成员变量;
它里面对i进行修改,肯定编译不过的
minico
2006-04-06
打赏
举报
回复
C++里面可以定义const成员函数的;
它的作用是防止修改成员变量,
比如那些只是输出信息的函数可以定义成const成员函数,
这些是基础的c++知识点,建议楼主系统学习一下.
C++类中const
成员
函数
与非const
成员
函数
的调用规则
const修饰类的
成员
函数
将const修饰的类
成员
函数
称之为const
成员
函数
,const修饰类
成员
函数
,实际修饰该
成员
函数
隐含的this指针,表明在
成员
函数
中不能对类的任何
成员
进行修改。 1.const对象可以调用非const
成员
函数
吗? 2.非const对象可以调用const
成员
函数
吗? 3.const
成员
函数
内可以调用其它的非const
成员
函数
吗? 4.非const
成员
函数
内可以调用其它的const
成员
函数
吗? 总结 调用的依据其实是传隐含的this指针的过程; 在使用const 的时
C++ const对象与非const对象的相互调用、const
成员
函数
与非const
成员
函数
的相互调用
1)const对象可以调用非const
成员
函数
吗? 答:不能。const修饰的对象实则修饰的是该对象的this指针,并且const修饰的
成员
不能进行修改,如果使用const调用非const
成员
函数
,可能会将const对象进行修改。 2)非const对象可以调用const
成员
函数
吗? 答:可以,这
里
就是将一个可以修改的对象进行读取,是允许的。 3)const
成员
函数
内可以调用其它的非const
成员
函数
吗? 答:不允许,const
成员
函数
调用非const
成员
函数
,调用该const
成员
函数
的
C++中const和非const对象分别调用const和非const
成员
函数
一、先来提出
问题
const对象可以调用非const
成员
函数
吗? 非const对象可以调用const
成员
函数
吗? const
成员
函数
内可以调用其它的非const
成员
函数
吗? 非const
成员
函数
内可以调用其他的const
成员
函数
吗? 二、实践出真知 实践发现: 1、const对象可以调用const
成员
函数
2、const对象不能调用非const
成员
函数
3、非const对象可以调用const
成员
函数
4、非const对象可以调用非const
成员
函数
5、const
成员
函数
不能调用非const
成员
函数
【C++】类的默认
成员
函数
----const
成员
函数
(超详细解析)
详解C++中的const
成员
函数
const对象不能调用非const
成员
函数
在C++中,可以用const来定义一个const对象,但const对象不可以调用类中的非const
成员
函数
原因 引发原因:: 由调用
成员
函数
时隐式传入的当前对象的this指针引起。 非const
成员
函数
中的隐式参数:classA* this const
成员
函数
中的隐式参数:const classA* this 根本原因: const对象的指针为const classA* this,因此传入非const
成员
函数
时编译器报错(类型不匹配,无法从const 指针转换为非const指针);但传入const成
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章