分析下列代码,改正其中的错误,使程序能正确运行: #include <iostream> using namespace std; class TV { public: void SetStation(int i); int GetStation(); private: int station; }; int main() { TV myTV; myTV.station=9; myTV.SetStation(10); TV myOtherTV(2);//创建一个对象,设置其频道数为2 } 在成员函数的定义中显式加入this指针,程序功能仍保持不变。
时间: 2024-01-14 13:05:06 浏览: 99
分析:
1. 在代码中,TV类中的station成员变量是私有的,无法在main函数中直接访问,因此在myTV.station=9;这一行代码中会出现错误。
2. 在main函数中创建对象时,只有一个参数,但是TV类中没有定义只有一个参数的构造函数。
3. 在调用SetStation函数时,没有明确指出要操作哪个对象的station成员变量,因此需要在成员函数中显式加入this指针来指示。
改正后的代码如下:
```
#include <iostream>
using namespace std;
class TV {
public:
void SetStation(int i);
int GetStation();
private:
int station;
};
void TV::SetStation(int i) {
this->station = i;
}
int TV::GetStation() {
return this->station;
}
int main() {
TV myTV;
myTV.SetStation(10);
TV myOtherTV;
myOtherTV.SetStation(2);
return 0;
}
```
在修改后的代码中,我们将myTV.station=9;改为了myTV.SetStation(10);,使用成员函数来设置对象的station成员变量;将TV类中的成员函数定义中显式加入this指针,指示要操作哪个对象的成员变量;将main函数中创建对象时的参数个数调整到与TV类中定义的构造函数参数个数一致。
阅读全文