一个类可以在其成员初始化列表中初始化其非立即基类吗?
Posted
技术标签:
【中文标题】一个类可以在其成员初始化列表中初始化其非立即基类吗?【英文标题】:Can a class initialize its non-immediate base classes in its member initialization list? 【发布时间】:2013-02-05 21:43:11 【问题描述】:以下代码摘自Apache C++ Standard Library User's Guide
class DerivedOutputStream : public std::ostream
public:
DerivedOutputStream():
std::ios(0), std::ostream(&dsb) //1
// ...
private:
DerivedStreamBuf dsb;
// ...
;
请注意std::ios
不是DerivedOutputStream
的直接基类,但它出现在成员初始化列表中。
我认为这是不正确的,是吗?
【问题讨论】:
【参考方案1】:如果它是一个虚拟基类是正确的。虚拟基是从最派生的类初始化的。
【讨论】:
可能是,根据下图:en.cppreference.com/w/cpp/io以上是关于一个类可以在其成员初始化列表中初始化其非立即基类吗?的主要内容,如果未能解决你的问题,请参考以下文章
为啥不能在派生类的构造函数初始化列表中初始化基类的数据成员?