相关疑难解决方法(0)

初始化列表*参数*评估顺序

因此,C++标准要求类成员按照它们在类中声明的顺序进行初始化,而不是在任何构造函数的初始化列表中提及它们的顺序.但是,这并不意味着评估这些初始化的参数的顺序.我正在使用一个经常传递对序列化对象的引用的系统,并想知道我是否可以确保以正确的顺序从中读取位,而不管这些位写入对象字段的顺序.

struct Foo {
    int a;
    double b;
    // I want to be able to do this
    Foo(SerObj &s)
    : b(s.readDouble()), a(s.readInt())
    { }
    // Rather than this
    Foo (SerObj &s)
    {
        b = s.readDouble();
        a = s.readInt();
    }
};
Run Code Online (Sandbox Code Playgroud)

显然,重新排序intsdoubles声明中的内容并不是一件大事,但更大的对象和需要动态分配的东西有时也可以.

c++ constructor initialization operator-precedence ctor-initializer

12
推荐指数
1
解决办法
1648
查看次数