假设我有一个抽象类,创建和复制是昂贵的:
class AbstractBase {
public:
AbstractBase() {
for (int i = 0; i < 50000000; ++i) {
values.push_back(i);
}
}
virtual void doThing() = 0;
private:
vector<int> values;
};
Run Code Online (Sandbox Code Playgroud)
它有两个子类FirstDerived:
class FirstDerived : public AbstractBase {
public:
void doThing() {
std::cout << "I did the thing in FirstDerived!\n";
}
};
Run Code Online (Sandbox Code Playgroud)
并且SecondDerived:
class SecondDerived : public AbstractBase {
public:
void doThing() {
std::cout << "I did the thing in SecondDerived!\n";
}
};
Run Code Online (Sandbox Code Playgroud)
此外,我想创建一个使用FirstDerived或SecondDerived使用组合(不是聚合)的类.意思是说我想 …