加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:35:55 所属栏目:百科 来源:网络整理
导读:我正在重写一些代码以消除全局变量并使类构造函数/析构函数句柄清理某些第三方库资源,但我担心一些代码会从类初始化列表中的另一个成员初始化一个成员. class MyPodofoDocument {public: // generates pdf to stream MyPodofoDocument(std::stringstream *pS
我正在重写一些代码以消除全局变量并使类构造函数/析构函数句柄清理某些第三方库资源,但我担心一些代码会从类初始化列表中的另一个成员初始化一个成员.
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初始化文件是安全的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读