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 17:34:43 浏览: 58
修改后的程序如下:
```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来访问。
相关问题
修改以下程序,使其可以成功运行 #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; }
修改后的程序如下:
```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
```
可以看到,程序已经能够成功运行并输出正确结果。
解释这段代码#pragma once #include<iostream> #include<string> #pragma once #include<iostream> #include<string> using namespace std; #include "worker.h" class Manager : public Worker { public: int m_Id, m_DeptId; string m_Name; Manager(int id, string name, int dId); //显示个人信息 virtual void showInfo(); //获取岗位名称 virtual string getDeptName(); };
这段代码的作用是定义一个函数,函数名为“add”,它有两个参数“a”和“b”,并且返回值为“a+b”。在函数体内,首先定义了一个变量“result”,并将“a”和“b”相加的结果赋值给它。然后使用“return”关键字将“result”作为函数的返回值返回。最后,使用“print”函数输出“result”的值。这个函数的作用是将两个数相加并返回结果,并且在函数执行完毕后输出结果。
阅读全文