下面代码在 main() 中有一行会导致编译错误,请找出来。
class Student {
public:
Student(string n, int s) : name(n), score(s) {}
string getName() {
return name;
}
void setScore(int s) {
score = s;
}
private:
string name;
int score;
};
int main() {
Student stu("Tom", 85);
cout << stu.getName(); // ①
stu.setScore(90); // ②
stu.score = 100; // ③
cout << stu.getName(); // ④
return 0;
}逐项分析每个选项,利用C++语法规则和算法知识判断正误。注意隐含条件(如整型溢出、栈溢出)。
注意题目问的是"错误的是"还是"正确的是",避免看反。选项中若有绝对化表述通常错误。
【考点】类的成员访问权限|封装性
GESP C++ 六级"面向对象程序设计"模块第 4 章"类的访问控制"。命题人卡的是考生对"类外访问规则"的模糊记忆——很多人背过"private 是私有的",但不会具体到"类外能否直接访问成员变量"这个操作层面。