使用成员的地址初始化基类是否合法?



这段代码合法吗?

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的(相关实例(的生命周期尚未开始,但它的存储存在,并且可能会形成指向它的指针(尽管还没有使用太多(。

相关内容

最新更新