c++ - 在子类中使用父类的对象。您需要将对象作为类构造函数传递吗?
问题描述
这很可能是一个重复的问题,但我一直无法找到解决这个问题的最佳方法。
我有一个父类,它创建一个对象,该对象具有对该对象进行操作的有用方法。然后我想创建一个子类,它通过引用获取父类的对象,并有一堆其他方法可以对其进行操作。
我想知道如何最好地解决这个问题?我应该将指向父类对象的指针作为子类的构造函数传递吗?
我想做什么:
class obj_parent{
initializes object
virtual void method_1
virtual void method_2
}
class operation: public obj_parent {
void opertation_method_1(*object)
void opertation_method_2(object)
}
另外,如果父类和子类被模板化会有什么区别?
我没有找到关于该主题的一些参考资料完全回答了我的问题,但可能很有用。 将对象传递给类构造函数 将模板类的对象传递给另一个类的构造函数
解决方案
好的,所以下面的示例正是您想要做的:子通过引用修改父对象的实例。父母持有一个单一的整数。是的,在现实生活中,一个对象通常会有多个成员变量,但这只是一个说明性示例。
class parentInt {
public:
int memberNumber;
parentInt(int number) {
memberNumber = number;
}
parentInt() {
memberNumber = 0;
}
};
class childInt : public parentInt {
public:
parentInt& mReferenceToParentObject;
childInt(parentInt& referenceToParentObject) :mReferenceToParentObject(referenceToParentObject) {}
void addOne() {
mReferenceToParentObject.memberNumber++;
}
void subtractOne() {
mReferenceToParentObject.memberNumber--;
}
};
int main()
{
parentInt p(5); //parent int is 5
childInt c(p); //child int is a reference to parent
c.addOne(); // parent's memberNumber is now 6 because the child modified the parent through the reference
c.subtractOne(); // parent's memberNumber is now 5 because the child modified the parent through the reference
}
如果您这样做是为了求解方程组(原始问题中未提及,请参阅注释),请将上面的 memberNumber 替换为向量向量以表示 2D 矩阵,然后将 addOne 更改为像高斯消除这样的算法来求解系统方程。
推荐阅读
- keystore - java keystore 无法恢复密钥
- python - urllib3 中的并发连接
- c# - 使用新的自定义属性 C# LDAP 更新用户
- javascript - Chart.js 条形图在只有 1 项时不居中
- ncurses - Ncurses ACS_BLOCK 与 WACS_BLOCK 不同?
- r - R包的版权
- javascript - 正则表达式有时在 Javascript 中返回 null
- eclipse - Gradle 构建配置帮助 - Eclipse Oxygen
- algorithm - 试图找出时间复杂度
- python - colorbar 不适用 vmin 和 vmax