读书人

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

发布时间: 2012-03-03 15:33:04 作者: rapoo

再讨论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修饰。

读书人网 >C++

热点推荐