习题 9.7 将第6题的程序分别作以下修改,分析所修改部分的含义以及编译和运行的情况。
(1) 将main函数第2行改为
const Student stud(101,78.5);
(2) 在(1)的基础上修改程序,使之能正常运行,用change函数修改数据成员num和score的值。
(3) 将main函数改为
int main( )
{Student stud(101,78.5);
Student *p=&stud;
p->display( );
p->change(101,80.5);
p->display( );
return 0;}
其他部分仍同第6题的程序。
(4) 在(3)的基础上将main函数第3行改为
const Student *p=&stud;
(5) 再把main函数第3行改为
Student *const p=&stud;
(1) 将main函数第2行改为
const Student stud(101,78.5);
分析:初始化对象为常对象
(2) 在(1)的基础上修改程序,使之能正常运行,用change函数修改数据成员num和score的值
解决:
常对象中只能通过常成员函数来访数据成员。所以先把display()和change()变为常成员函数:
void change(int n, float s) const { num = n;