c+的一道题?

来源:百度知道 编辑:UC知道 时间:2024/05/15 17:26:17
:#include <iostream>
using namespace std;
class Student
{public:
Student(int n,float s):num(n),score(s){}
void change(int n,float s){num=n;score=s;}
void display(){cout<<num<<" "<<score<<endl;}

private:
int num;
float score;
};

int main()
{Student stud(101,78.5);

stud.display();
stud.change(101,80.5);
stud.display();
return 0;
}
-------------------------------------------
做了一道题说是把main函第二行改为
const Student stud(101,78.5);
然后修改程序是之能正常运行,用change函数修改数据成员num和score的?

对于const Student stud(101,78.5);这句话,年把对象声明为常对象,并且常对象只能调用常成员函数.所以你要在每个成员函数后面加上const修饰符,但常成员函数是不能修改类的数据成员的,如果要达到修改,你要在数据成员前面加上mutable修饰符,声明它是可以改变的,这样才可以正确~修改好的程序我已经写在下面了,请你自己去体会下吧
#include <iostream>
using namespace std;

class Student
{
public:
Student(int n,float s):num(n),score(s) {}
void change(int n,float s) const
{
num=n;
score=s;
}
void display() const
{
cout<<num<<" "<<score<<endl;
}
private:
mutable int num;
mutable float score;
};

int main()
{
const Student stud(101,78.5);
stud.display();
stud.change(101,80.5);
stud.display();
return 0;
}