从const成员函数返回*this
C++Primer上一句话,“不能从const成员函数返回指向类对象的普通引用。const成员函数只能返回*this作为一个const引用。”
const成员函数只能返回const对象引用吗?
刚有翻了下林锐的高质量编程,“const成员函数并非一定要返回const类型,非const成员函数也并非必须返回非const类型。”
怎么看着有点矛盾啊?
[解决办法]
const成员函数并非一定要返回const类型,非const成员函数也并非必须返回非const类型 --- 并非一定 但最好还是按规矩来
[解决办法]
下面那句,并没有说是类对象自身啊,可以是别的东西
比如const成员函数返回值类型而非引用,或者返回mutable的成员引用
非const成员函数返回const类型就更加可以了
当然,const成员函数返回类自身的非const引用或者内部成员变量的非const引用原则上是不可以的,但要是强转一下,语法上也不是做不到
[解决办法]
const 成员函数不能修改对象自身的数据,也不能返回一个什么东西让外面去修改它,理解这个就能具体情况具体判断了。
[解决办法]
class A
{
pubilc:
A(int a);
int fun()const;
pubilc:
int i;
}
int A::fun()const
{
this->i = 10;// 这个位置是错的。
return i;
}
const的成员函数,说明类的成员变量都是const。外界是不能对他进行修改的。