【发布时间】:2017-03-16 12:26:23
【问题描述】:
class Foo {
private:
string x;
};
class Bar : public Foo {
public:
void get_data() {
cin >> x;
}
};
我不太明白为什么这行代码不起作用。能做到这一点不就是继承成员变量的目的吗?
【问题讨论】:
标签: c++
class Foo {
private:
string x;
};
class Bar : public Foo {
public:
void get_data() {
cin >> x;
}
};
我不太明白为什么这行代码不起作用。能做到这一点不就是继承成员变量的目的吗?
【问题讨论】:
标签: c++
private 对子类隐藏。只有friends(和Foo 本身)可以访问它。也许您希望 x 成为 protected?
【讨论】:
这是不可能的。 private 表示该变量的名称只能由该类(以及任何 friends)访问。
访问说明符protected 表示该类、派生类和朋友可以访问。您可以将x 设为protected,或将get_data() 移至Foo 的公共部分。
【讨论】:
x来访问它。
Bar 是带有附加功能的 Foo。所以所有的Foo 都被继承了。