我不确定我的问题是否正确,但我想要了解的是模拟在C ++中的类树中的聚合成员变量中“累积”的数据的最佳方法。也就是说,每个派生类都会向成员添加一些数据,从其父级继承一些初始数据。
例如,假设我有一个“描述”字符串,它有一个或多个句子,这些句子对树中的所有类都是通用的,零或多个句子对于树的各个分支是通用的,并且有零个或多个句子对于特定的叶节点是唯一的。
在C ++中对此进行建模的最佳方法是什么?
最明显的方式似乎是这样的:
#include <iostream>
#include <string>
class A {
public:
A() {
appendDesc("base description\n");
}
void printDesc (void) {
std::cout << description;
}
protected:
void appendDesc (std::string description) {
this->description.append(description);
}
private:
std::string description;
};
class B : public A {
public:
B() {
appendDesc("extra description\n");
}
};
int main(int argc, const char *argv[]) {
B b;
b.printDesc(); // prints "accumulated" description
return 0;
}
我在这里使用字符串作为示例,但该原则适用于需要通过类树在聚合成员上“累积”的任何内容。
那么,在基类中使用append()
方法并使派生类在构造函数中调用它是最好的方法,还是有更好的方法?上述方法有任何缺点吗?