如何在C ++中的继承树中建模数据累积?

时间:2014-08-05 15:44:37

标签: c++ inheritance tree modeling

我不确定我的问题是否正确,但我想要了解的是模拟在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()方法并使派生类在构造函数中调用它是最好的方法,还是有更好的方法?上述方法有任何缺点吗?

0 个答案:

没有答案