我可以使用在初始化列表中初始化的C类成员,稍后在列表中吗?

前端之家收集整理的这篇文章主要介绍了我可以使用在初始化列表中初始化的C类成员,稍后在列表中吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在重写一些代码以消除全局变量并使类构造函数/析构函数句柄清理某些第三方库资源,但我担心一些代码会从类初始化列表中的另一个成员初始化一个成员.
class MyPodofoDocument {
public:
    // generates pdf to stream
    MyPodofoDocument(std::stringstream *pStringStream)
        : device(pStringStream),document(&device)
    {
    }
private:
    PoDoFo::PdfOutputDevice device;
    PoDoFo::PdfStreamedDocument document;
    PoDoFo::PdfPainter painter;
};

使用这个类的代码不需要查看使用该库的所有细节,但是我隐藏它们的方式使它依赖于使用成员初始化其他成员,然后才能访问构造函数的实际代码块,在那里它有一个有效的this指针.

它适用于单元测试骨架,所以我的问题基本上是,“这样可以,便携且安全吗?”

解决方法

成员按照声明的顺序从上到下进行初始化
PoDoFo::PdfOutputDevice device;
PoDoFo::PdfStreamedDocument document;
PoDoFo::PdfPainter painter;

所以使用device初始化文件是安全的.

猜你在找的C&C++相关文章