gpt4 book ai didi

c++ - 我可以在列表后面的初始化列表中使用初始化的 C++ 类成员吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:32 25 4
gpt4 key购买 nike

我正在重写一些代码以消除全局变量并使类构造函数/析构函数处理一些第三方库资源的清理,但我担心一些代码会从类初始化列表中的另一个成员初始化一个成员。

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初始化document是安全的。

关于c++ - 我可以在列表后面的初始化列表中使用初始化的 C++ 类成员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14966501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com