请设计一个带继承的C++程序,来说明和验证protected 成员的特点与作用。要求有文字的注释 备注:要体现基类对象对protected的访问;派生类对象对protected的访问;派生类成员函数对基类成员的访问。
时间: 2023-11-27 14:52:53 浏览: 75
以下是一个简单的C++程序,用来说明和验证protected成员的特点与作用:
```c++
#include <iostream>
using namespace std;
// 基类
class Base {
protected: // protected成员
int num;
public:
Base(int n = 0) : num(n) {}
void show() {
cout << "Base num: " << num << endl;
}
};
// 派生类
class Derived : public Base {
public:
Derived(int n = 0) : Base(n) {}
void set(int n) {
num = n; // 基类对象对protected的访问
}
void show() {
cout << "Derived num: " << num << endl;
Base::show(); // 派生类成员函数对基类成员的访问
}
};
int main() {
Base b(10);
Derived d(20);
// 基类对象对protected的访问
b.show();
// 派生类对象对protected的访问
d.show();
d.set(30);
d.show();
return 0;
}
```
在这个程序中,我们定义了一个基类`Base`,其中有一个protected成员`num`,并且定义了一个派生类`Derived`,它继承了`Base`类,并且也有一个成员`num`。
在`Derived`类中,我们定义了一个`set`函数,用来设置`num`的值,由于`num`是protected的,所以在派生类中可以直接访问。
在`Derived`类的`show`函数中,我们输出了`num`的值,并且调用了基类的`show`函数,这样就体现了派生类成员函数对基类成员的访问。
在`main`函数中,我们创建了一个基类对象`b`和一个派生类对象`d`,并且调用了它们的`show`函数,这样就体现了基类对象对protected的访问和派生类对象对protected的访问。同时,我们也调用了`d`对象的`set`函数,来修改`num`的值,并且再次调用了`d`对象的`show`函数,来验证修改的结果。
阅读全文