社区
C++ 语言
帖子详情
C++类的指针函数和const函数
xiehui888
2008-04-18 08:45:23
对于指针函数的声明小弟一直很头疼,简单的还能够理解
复杂的我就晕呼呼了
还有我想知道类的const函数内为什么不能够修改类成员的值!
...全文
219
12
打赏
收藏
C++类的指针函数和const函数
对于指针函数的声明小弟一直很头疼,简单的还能够理解 复杂的我就晕呼呼了 还有我想知道类的const函数内为什么不能够修改类成员的值!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
herman~~
2008-04-19
打赏
举报
回复
函数指针
int (*fun)(int,int); 返回值,参数,没啥特别
const为啥不能修改变量值,这个C++ PRIMER解释得很清楚
非静态成员函数会带this指针,指向对象地址。如果函数声明为const 则把this指向为常量,相当于你定义 int i ; const int * pI = i; pI指向的变量值不允许你修改
Walker-cheng
2008-04-19
打赏
举报
回复
const成员函数是编译器在编译时做了处理
Maxwell
2008-04-19
打赏
举报
回复
const成员函数的要求就是不能修改对象的状态,所以一般的成员变量是不允许修改的,但是有时候成员变量的改变从外面看不会影响对象的状态(比如用于缓存的成员变量),那么可以在定义的时候在前面加上mutable,那就可以在const函数中修改了。
悠悠长风
2008-04-19
打赏
举报
回复
你要是想在const函数中修改类成员,可以把该类成员加一个mutable声明。
solo_coder
2008-04-19
打赏
举报
回复
在能用const的地方,尽量使用const,
能提高代码的可读性和维护性。
我是风
2008-04-19
打赏
举报
回复
[Quote=引用 2 楼 akirya 的回复:]
类的const函数内为什么不能够修改类成员的值!
这是规定
[/Quote]
whvcliker
2008-04-19
打赏
举报
回复
LZ的第一个问题问得不太清楚,太大,无法回答,如果对函数指针感兴趣,有不少书讲到了,可心查查
对于第二个问题,原因很简单:
这涉及到语言哲学,const的语义是,不能改变,对于函数而言,如何保证这个语义?
当然,C++里对于成员函数,参数会由系统带入一个const this指针,这样,在内部使用时,引用的是一个const类指针,自然就修改不了成员。
这里可作个试验:
class CTest
{
private:
int m_iData;
public:
int get_data(void) const
{
CTest* pTest = const_cast<CTest*>(this);// 这里只是做试验,请不要在实际代码中使用
pTest->m_iData = 3;
return m_iData;
}
CTest()
: m_iData(1)
{}
};
int
main ()
{
CTest test;
int data = test.get_data();// 这里的值是多少呢?
return 0;
}
rushman
2008-04-18
打赏
举报
回复
规定的背后还是有原因的。
当访问一个 const 对象的时候,const 函数可以调用,非 const 函数就不能调用,以避免修改 const 对象的数据。那么不允许 const 函数修改成员值就很好理解了。
zpk1234
2008-04-18
打赏
举报
回复
const函数 不能修改this指针, 而成员变量是通过this指针取得的
如m_iMember是通过this->m_iMember索引而得的
myullian
2008-04-18
打赏
举报
回复
[Quote=引用 2 楼 akirya 的回复:]
类的const函数内为什么不能够修改类成员的值!
这是规定
[/Quote]
就是规定,没有那么多的为什么
珍惜生命远离CPP
2008-04-18
打赏
举报
回复
类的const函数内为什么不能够修改类成员的值!
这是规定
薛定谔之死猫
2008-04-18
打赏
举报
回复
指针函数,函数指针等不用记名称,写出来时候看*号的位置按照结合律进行归并就可以了
加了const就是用来约束这个了
C++
类
成员
函数
中
const
的用法
C++
类
中,
const
的用法个人总结主要有以下几种: 1. 用来修饰成员变量,比如
const
int var; 2. 用来修饰形参,主要针对引用,比如
const
type& 3. 用来修饰返回值,返回常量引用; 4.放在成员
函数
的形参列表...
C\
C++
中
函数
后面加
const
c++
在
函数
后加
const
的意义: 我们定义的
类
的成员
函数
中,常常有一些成员
函数
不改变
类
的数据成员,也就是说,这些
函数
是"只读"
函数
,而有一些
函数
要修改
类
数据成员的值。...
const
成员
函数
和
const
对
c++
在
函数
后加
const
的意义:
我们定义的
类
的成员
函数
中,常常有一些成员
函数
不改变
类
的数据成员,也就是说,这些
函数
是"只读"
函数
,而有一些
函数
要修改
类
数据成员的...
const
成员
函数
和
const
对象 实际上,
const
成员
函数
还有另外一项作...
C++
this
指针
与
const
成员
函数
C++
this
指针
与
const
成员
函数
this
指针
每个对象拥有一个this
指针
,通过this
指针
来访问自己的地址。 this
指针
并不是对象的一部分,this
指针
所占的内存大小是不会反应在sizeof操作符上的。 this
指针
只能在成员
函数
中...
【
C++
】
类
的默认成员
函数
----
const
成员
函数
(超详细解析)
详解
C++
中的
const
成员
函数
C++ 语言
64,684
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章