首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

再讨论const int foo()的意思,该怎么处理

2012-03-03 
再讨论const int foo()的意思constchar&foo()到底是可以让const对象调用,而const对象也只能调const函数还

再讨论const int foo()的意思
const   char   &foo()
到底是可以让const对象调用,   而const对象也只能调const函数
还是
const表示不能修改返回的char&
还是二者兼有
谢谢了

[解决办法]
去看看effective c++ 21条..
[解决办法]
const char &foo()
const表示不能修改返回的char&

char& foo()const
让const对象调用.
其实非const对象也可以调用(非const对象可以转化为const对象).
所以这个const保证了foo不会修改到调用它对象.

[解决办法]
返回const引用
[解决办法]
这个问题,不要孤立的在非成员函数中讨论。因为,在普通函数中这样用是错误的。
在类中的例子:
class A {
public:
const char & foo() const;
private:
char value_;
}

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

后一个const 对一个非成员函数无意义,对非成员函数是不能这样使用的。这也就是说,它只使用在成员函数上。我想,你的第一个问题指的是这个。它说明this指针有一个const修饰。

热点排行