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