指出调试中的出错原因。 #include <iostream.h> class A { public: void seta(int i) { a=i; } int geta() { return a; } public: int a; }; class B:public A { public: void setb(int i) { b=i; } int getb() { return b; } void show() { cout<<"A::a="<<a<<endl; } //语句9 public: int b; }; void main() { B bb; //语句1 bb.seta(6); //语句2 bb.setb(3); //语句3 bb.show(); //语句4 cout<<"A::a="<<bb.a<<endl; //语句5 cout<<"B::b="<<bb.b<<endl; //语句6 cout<<"A::a="<<bb.geta()<<endl; //语句7 cout<<"B::b="<<bb.getb()<<endl; //语句8 } 按下列要求对程序进行修改,然后调试,对出现的错误分析其原因。
时间: 2024-03-29 22:40:10 浏览: 152
程序中存在以下问题:
1. `#include <iostream.h>` 库不建议使用,应该改为 `#include <iostream>`。
2. `main()` 函数应该返回 `int` 类型,应该改为 `int main()`。
3. `class A` 中的成员变量 `a` 应该设置为 `private`,因为它已经有了对应的 `public` 成员函数 `geta()` 和 `seta()`。
4. `class B` 中的成员变量 `b` 应该也设置为 `private`。
5. `class B` 中的 `show()` 函数中的输出语句应该改为 `cout<<"A::a="<<geta()<<endl;`,因为 `a` 已经被设置为 `private` 了。
修改后的程序如下:
```
#include <iostream>
using namespace std;
class A {
private:
int a;
public:
void seta(int i) {
a = i;
}
int geta() {
return a;
}
};
class B:public A {
private:
int b;
public:
void setb(int i) {
b = i;
}
int getb() {
return b;
}
void show() {
cout<<"A::a="<<geta()<<endl;
}
};
int main() {
B bb;
bb.seta(6);
bb.setb(3);
bb.show();
cout<<"A::a="<<bb.geta()<<endl;
cout<<"B::b="<<bb.getb()<<endl;
cout<<"A::a="<<bb.geta()<<endl;
cout<<"B::b="<<bb.getb()<<endl;
return 0;
}
```
运行程序后,输出结果如下:
```
A::a=6
A::a=6
B::b=3
A::a=6
B::b=3
```
程序运行正常,没有出现错误。
阅读全文