4. 修改以下程序,使其可以成功运行 #include<iostream.h> class base{ int x; public: void setx(int n){ x=n;} void showx( ){ cout<<x<<endl;} }; class derived:private base{ private: int y; public: void setxy(int n,int m) { setx(n); y=m; } void showxy( ){ cout<<x<<endl; cout<<y<<endl; } }; Int main() { derived obj; obj.setx(10); obj.showx(); obj.setxy(10,20); obj.showxy( ); return 0; }
时间: 2024-03-26 22:34:43 浏览: 55
#include"iostream.h"
3星 · 编辑精心推荐
修改后的程序如下:
```cpp
#include<iostream>
using namespace std;
class base{
int x;
public:
void setx(int n){ x=n;}
void showx( ){ cout<<x<<endl;}
};
class derived:private base{
int y;
public:
void setxy(int n,int m){ setx(n); y=m; }
void showxy( ){ cout<<base::x<<endl; cout<<y<<endl; }
};
int main() {
derived obj;
obj.setxy(10,20);
obj.showxy();
return 0;
}
```
在原程序中,由于类derived私有继承了类base,因此在main函数中不能访问base类的public成员函数setx和showx。解决方法是,将obj.setx(10);和obj.showx();改为obj.setxy(10,20);和obj.showxy();。同时,在showxy函数中,由于x是base类的private成员,不能直接访问,需要用base::x来访问。
阅读全文