声明一个基类 Animal,有私有整型成员变量 age,构造其派生类 dog,在其成员函数 SetAge(int n)中直接给 age 赋值,看看会有什么问题,把 age 改为公有成员变量,再在 dog 类用成员函数 ShowAge() 输出变量 age 的值。
时间: 2024-10-12 11:04:52 浏览: 62
首先,我们声明一个基类 `Animal`,其中有一个私有整型成员变量 `age`,表示动物的年龄:
```cpp
class Animal {
private:
int age;
public:
// 构造函数和其他公共方法...
};
```
然后,我们创建一个派生类 `Dog`,试图在 `SetAge` 函数中直接设置 `age` 变量:
```cpp
class Dog : public Animal {
public:
void SetAge(int n) {
age = n; // 直接赋值可能会有问题,因为age是私有的
}
};
```
如果尝试在派生类的这个函数里直接访问 `age`,由于它是私有的,编译器会报错,不允许在派生类的函数内部直接修改基类的私有成员。
接着,我们需要将 `age` 设置为公有,以便于派生类中的其他成员函数可以直接访问:
```cpp
class Animal {
public:
int age;
// 构造函数和其他公共方法...
};
class Dog : public Animal {
public:
void SetAge(int n) {
age = n; // 现在可以正常设置age了,因为它已经是公有成员
}
// 添加ShowAge方法
void ShowAge() {
cout << "Dog's age is: " << age << endl;
}
};
```
现在,在 `Dog` 类中,你可以通过 `ShowAge()` 函数显示 `age` 的值:
```cpp
Dog myDog;
myDog.SetAge(5);
myDog.ShowAge(); // 输出: Dog's age is: 5
```
阅读全文