新手问题求解
C++那本书里,在类那一章的代码:const Stock & topval(const stock & s)const
这段代码我始终无法理解,望指点!
我是这么认为的:
1.创建一个topval 函数,该函数是返回一个stock类的对象,并且该对象是const
2.参数也是一个stock的对象的引用,并且也是const的
3.最后1个const表明是常量函数,反正就是数据不能修改
问题是stock & topval,这里为什么一定要有个&呢,不能就直接写成const Stock topval(const stock & s)const吗?
[解决办法]
这应该是某个类的成员函数,否则最后一个const声明是不允许的。
最后一个中把成员函数声明为const,它表明这个成员函数不会改变它所属对象的状态,可以对常量对象调用这个函数:
class C
{
public:
void fun1();
void fun2()const;
};
...
C a;
C const b;
a.fun1();//OK
a.fun2();//OK
b.fun1();//错误!不能对常量对象调用非常量非静态成员函数。
b.fun2();//OK
#include <iostream>
using namespace std;
class A{
public:
A(int i = 0): x(i){}
void setx(int i){ x = i;}
int getx(){ return x;}
A fun1(A &a){ return a;}
A& fun2(A &a){ return a;}
private:
int x;
};
int main(){
A a(1);
a.fun1(a).setx(3);
cout<<a.getx()<<endl;
a.fun2(a).setx(4);
cout<<a.getx()<<endl;
return 0;
}