派生类是否有任何主流语言的设计模式可以从基类继承代码并在派生类的范围内评估该代码? 例如(使用伪 C++ 语法):
class Base {
// (How) can this be modified to be evaluated
// in the derived class's scope so that it
// prints the size of the derived class?
void printSize() {
cout << sizeof(*this) << endl;
}
};
class Derived : public Base {
void* dummy;
};
int main() {
Base base;
Derived derived;
base.printSize();
derived.printSize(); // Should be > base.printSize().
return 0;
}
我意识到这可以用宏来完成,但这需要在派生类的范围内显式实例化宏。
编辑: 澄清一下,这篇文章的重点是我不想printSize()
在每个派生类中手动重新实现或任何类似的东西。我正在寻找一种聪明的模式来制作编译器/解释器(我很想知道是否有任何语言有解决方案,即使我在我的示例中使用了 C++)为我做这个。
编辑#2: 我想这在动态语言中很容易。我对静态类型语言的解决方案更感兴趣,主要是 C++、Java 和 D。
编辑#3:该模式应该适用于运行时类型,而不是编译时类型。所以,D的模板这个参数不是解决办法。