C++父亲类能访问子类变量吗用代码详细举例说明
时间: 2023-12-13 22:04:00 浏览: 111
python入门-30.寻找列表中只出现一次的数字-寻找单身狗.py
C++中,父类是不能直接访问子类的变量的,因为子类的变量是在子类中定义的私有成员,无法被父类直接访问。但是,可以通过在子类中定义公有的访问函数来实现父类对子类变量的访问。
下面是一个简单的例子,父类Animal有一个私有成员变量age,子类Dog继承自Animal并定义了一个私有成员变量name。通过为子类定义公有的访问函数,父类可以访问子类的私有变量name。
```c++
#include <iostream>
using namespace std;
class Animal {
private:
int age;
public:
void setAge(int a) {
age = a;
}
int getAge() {
return age;
}
};
class Dog : public Animal {
private:
string name;
public:
void setName(string n) {
name = n;
}
string getName() {
return name;
}
};
int main() {
Dog myDog;
myDog.setAge(3);
myDog.setName("Lucky");
// 父类Animal访问子类Dog的name变量
cout << "My dog's name is " << static_cast<Dog*>(&myDog)->getName() << endl;
// 父类Animal访问子类Dog的age变量
cout << "My dog's age is " << myDog.getAge() << endl;
return 0;
}
```
在上面的例子中,通过将Dog类型的指针强制转换为Animal类型的指针,就可以实现父类Animal对子类Dog的私有变量name的访问。同时,由于age是Animal类的私有成员,因此父类Animal可以直接访问子类Dog继承来的age变量。
阅读全文