这段代码合法吗?
class BaseClass
{
public:
BaseClass (int *p) : p_ (p) { }
private:
int *p_;
};
class SubClass : public BaseClass
{
public:
SubClass () : BaseClass (&i_), i_ (123) {}
private:
int i_;
};
众所周知,基类是在子类的成员之前构造的,这就是我想知道的原因。
是的,这很好:虽然SubClass::i
的(相关实例(的生命周期尚未开始,但它的存储存在,并且可能会形成指向它的指针(尽管还没有使用太多(。