【发布时间】:2011-10-12 16:18:42
【问题描述】:
有没有办法消除 Foo 中的显式构造函数调用,并以某种方式将 Bar::len 分配给 Bar 的任何子类的大小?
class Bar
{
size_t len_;
Bar(size_t len) : len_(len) { }
};
class Foo : public Bar
{
Foo() : Bar(sizeof(Foo)) { }
};
【问题讨论】:
-
哦,我明白了。由于
explicit Bar(size_t len)之类的东西,显式构造函数可能是一个误导性术语。 -
我不知道。 Bar 子类无法知道其最派生类型的大小。
-
虚拟成员
len()返回sizeof(*this),在每个派生类中被覆盖怎么样? -
@KerrekSB:难道虚函数不能在构造函数/析构函数中工作吗?
-
@MooingDuck:好吧,在那个版本中根本没有理由使用构造函数......
标签: c++ class templates subclass