再讨论const int foo()的意思

winner8080 2007-04-06 11:45:55
const char &foo()
到底是可以让const对象调用, 而const对象也只能调const函数
还是
const表示不能修改返回的char&
还是二者兼有
谢谢了
...全文
271 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yutaooo 2007-04-06
  • 打赏
  • 举报
回复
这个问题,不要孤立的在非成员函数中讨论。因为,在普通函数中这样用是错误的。
在类中的例子:
class A {
public:
const char & foo() const;
private:
char value_;
}

void main() {
A a;
A.foo() = 't'; // 这就不行。这主要是因为,前一个const,指定了返回的引用的对象不可
// 修改。
}

后一个const 对一个非成员函数无意义,对非成员函数是不能这样使用的。这也就是说,它只使用在成员函数上。我想,你的第一个问题指的是这个。它说明this指针有一个const修饰。
chenyu2202863 2007-04-06
  • 打赏
  • 举报
回复
返回const引用
0黄瓜0 2007-04-06
  • 打赏
  • 举报
回复
const char &foo()
const表示不能修改返回的char&

char& foo()const
让const对象调用.
其实非const对象也可以调用(非const对象可以转化为const对象).
所以这个const保证了foo不会修改到调用它对象.
hellox 2007-04-06
  • 打赏
  • 举报
回复
去看看effective c++ 21条..

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧