修改以下程序,使其可以成功运行 #include<iostream.h> class base { private: int x; protected: int y; public: void setxy(int m,int n){ x=m; y=n;} void showxy(){ cout<<"x="<<x<<endl; cout<<"y="<<y<<endl;} }; class derived: public base { //声明一个公有派生类 private: int z; public: void setxyz(int m,int n,int l) { setxy(m,n); z=l; } void showxyz() { cout<<"x="<<x<<endl; cout<<"y="<<y<<endl; cout<<"z="<<z<<endl; } }; int main() { derived obj; obj.setxyz(30,40,50); obj.showxy(); obj.showxyz(); return 0; }
时间: 2024-03-26 12:34:47 浏览: 171
#include"iostream.h"
3星 · 编辑精心推荐
修改后的程序如下:
```cpp
#include<iostream>
using namespace std;
class base {
private:
int x;
protected:
int y;
public:
void setxy(int m,int n){ x=m; y=n;}
void showxy(){ cout<<"x="<<x<<endl; cout<<"y="<<y<<endl;}
};
class derived: public base {
//声明一个公有派生类
private:
int z;
public:
void setxyz(int m,int n,int l){ setxy(m,n); z=l; }
void showxyz(){ cout<<"x="<<base::x<<endl; cout<<"y="<<y<<endl; cout<<"z="<<z<<endl; }
};
int main() {
derived obj;
obj.setxyz(30,40,50);
obj.showxyz();
return 0;
}
```
在原程序中,由于类base的x是private成员,不能在类derived中直接访问,需要使用base::x来访问。同时,在showxy函数中也需要用base::x来访问x。修改后程序运行结果为:
```
x=30
y=40
z=50
```
可以看到,程序已经能够成功运行并输出正确结果。
阅读全文