c++ - 如何从 C++ 中的子类访问父类的成员变量?
问题描述
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。
解决方案
由于当前编写的代码,有问题的 3 个字段都private
在A
其中,因此根本无法访问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
toA
,例如:
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;
}
推荐阅读
- azure - Azure 媒体服务 CreateWithHttpMessagesAsync - 操作返回无效状态代码:“BadRequest” -
- c++ - 如何使用默认参数将调用函数名称传递给被调用函数
- git - 如何重新初始化 git 裸仓库以便再次发布所有文件?
- inno-setup - 如何在 Inno Setup 中的参数字符串上传递双引号?
- python - 如何在 Python 3 中使用字典中的名称迭代地创建对象?
- java - 尝试在 AndroidStudio 中添加 firebase 依赖项时出现重复的类错误
- javascript - JavaScript 中的动画数学公式
- node.js - 无法使用 passport-ldapauth 绑定 AD 管理员
- seaborn - 反转热图颜色条的颜色
- python - Pygame:角色没有出现在屏幕上