如何从 C++ 中的子类访问父类的成员变量?
Posted
技术标签:
【中文标题】如何从 C++ 中的子类访问父类的成员变量?【英文标题】:How can I access the member variables of parent class from child class in c++? 【发布时间】:2020-09-25 13:54:25 【问题描述】:class A
int a,b,c;
public:
A(int x, int y, int z)
a=x;
b=y;
c=z;
class B: public A
int main()
A ob1(10, 12, 13);
B obj;
return 0;
如何从 B 类对象中为 A 类对象的每个变量添加 5? TIA。
【问题讨论】:
让他们protected
或public
?
听起来你可以使用good C++ book
@FredLarson 还是允许B
通过friend
访问它们?
@MikeCAT:那也行!
@NabidAnzum:类成员默认拥有private
访问权限,所以没有,除非您更改他们的访问权限、提供访问者或使用friend
。
【参考方案1】:
由于当前编写的代码,有问题的 3 个字段是 A
中的 private
,因此 B
根本无法访问。您需要更改 A
以使 B
可以访问它们。通过:
protected
或public
而不是private
,或者至少提供在内部使用字段的protected
/public
访问器方法,例如:
class A
protected:
int a, b, c;
public:
A(int x, int y, int z)
a = x;
b = y;
c = z;
;
class B: public A
public:
void add5()
a += 5;
b += 5;
c += 5;
;
int main()
A ob1(10, 12, 13);
B obj;
obj.add5();
return 0;
class A
int a, b, c;
public:
A(int x, int y, int z)
a = x;
b = y;
c = z;
int geta() const return a;
void seta(int value) a = value;
int getb() const return b;
void setb(int value) b = value;
int getc() const return c;
void setc(int value) c = value;
;
class B: public A
public:
void add5()
seta(geta() + 5);
setb(getb() + 5);
setc(getc() + 5);
;
int main()
A ob1(10, 12, 13);
B obj;
obj.add5();
return 0;
使B
成为friend
到A
,例如:
class A
int a, b, c;
public:
A(int x, int y, int z)
a = x;
b = y;
c = z;
friend class B;
;
class B: public A
public:
void add5()
a += 5;
b += 5;
c += 5;
;
int main()
A ob1(10, 12, 13);
B obj;
obj.add5();
return 0;
【讨论】:
以上是关于如何从 C++ 中的子类访问父类的成员变量?的主要内容,如果未能解决你的问题,请参考以下文章