社区
新手乐园
帖子详情
const成员函数的问题
NesTa_xP
2008-01-05 10:37:50
比如
const xp() const;
为什么后面还要跟一个const呢??
...全文
80
4
打赏
收藏
const成员函数的问题
比如 const xp() const; 为什么后面还要跟一个const呢??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
NesTa_xP
2008-01-05
打赏
举报
回复
为什么要加2个const呢
前面1个后面1个
只加前面不行吗
monkeylzj
2008-01-05
打赏
举报
回复
1.用const 修饰函数的返回值,即前面的const:
如果给以“指针传递”方式的函数返回值加const 修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。例如函数
const char * GetString(void);
如下语句将出现编译错误:
char *str = GetString();
正确的用法是
const char *str = GetString();
如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加const 修饰没有任何价值。
例如不要把函数int GetInt(void) 写成const int GetInt(void)。
同理不要把函数A GetA(void) 写成const A GetA(void),其中A 为用户自定义的数据类型。
如果返回值不是内部数据类型,将函数A GetA(void) 改写为const A & GetA(void)的确能提高效率。但此时千万千万要小心,一定要搞清楚函数究竟是想返回一个对象的“拷贝”还是仅返回“别名”就可以了,否则程序会出错。
函数返回值采用“引用传递”的场合并不多,这种方式一般只出现在类的赋值函数中,目的是为了实现链式表达。
2:const 成员函数,即最后面的const:
任何不会修改数据成员的函数都应该声明为const 类型。如果在编写const 成员函数时,不慎修改了数据成员,或者调用了其它非const 成员函数,编译器将指出错误,这无疑会提高程序的健壮性。以下程序中,类stack 的成员函数GetCount 仅用于计数,从逻辑上讲GetCount 应当为const 函数。编译器将指出GetCount 函数中的错误。
class Stack
{
public:
void Push(int elem);
int Pop(void);
int GetCount(void) const; // const 成员函数
private:
int m_num;
int m_data[100];
};
int Stack::GetCount(void) const
{
++ m_num; // 编译错误,企图修改数据成员m_num
Pop(); // 编译错误,企图调用非const 函数
return m_num;
}
const 成员函数的声明看起来怪怪的:const 关键字只能放在函数声明的尾部,大概是因为其它地方都已经被占用了。
awperpvip
2008-01-05
打赏
举报
回复
防止函数体内修改类成员变量
songyimao
2008-01-05
打赏
举报
回复
表示这个成员函数不改变类的属性的值。
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
修饰类
成员函数
,实际修饰该
成员函数
隐含的this指针,表明在
成员函数
中不能对类的任何成员进行修改。 1.
const
对象可以调用非
const
成员函数
吗? 2.非
const
对象可以调用
const
成员函数
吗? 3.
const
成员函数
内可以调用其它的非
const
成员函数
吗? 4.非
const
成员函数
内可以调用其它的
const
成员函数
吗? 总结 调用的依据其实是传隐含的this指针的过程; 在使用
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
成员函数
文章目录1 C++中的
const
成员函数
1.1
const
成员函数
的使用 1 C++中的
const
成员函数
1.1
const
成员函数
的使用 对于一个
const
对象来说,是不能调用普通的
成员函数
的。因为,C++认为,
const
(常量)对象,如果允许去调用普通的
成员函数
,而这个
成员函数
内部可能会修改这个对象的数据成员!而这将导致
const
对象不再是
const
对象!
const
对象只能调用
const
成...
[C++:类的默认
成员函数
——Lesson7.
const
成员函数
]
本文深入探讨了C++中
const
成员函数
的重要性和应用场景。主要内容包括:1.
const
成员函数
的核心概念:用于保证函数不会修改类的非静态成员变量,语法形式为在函数声明和定义后加
const
关键字。2. 关键特性:
const
对象只能调用
const
成员函数
;非
const
对象可调用所有
成员函数
;支持通过
const
关键字进行函数重载。3. 常见
问题
解析:包括权限放大/缩小
问题
、
const
对象调用限制、
成员函数
间调用规则等。4. 取地址操作符重载:介绍了普通和
const
版本的取地址操作符重载语法和用途。5. 全面总
新手乐园
33,317
社区成员
41,771
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章