-Wreorder和构造函数初始化器列表

用户9196120

我声明了一个类模板,如下所示:

template<typename T>

    class C{
             public:
                      C(T&,        
                        shared_ptr<C<T>>&
                       );
                // rest of the public interface

             private:

                     T& rData;
                     shared_ptr<C<T>>& rP;            
              };

随后,我将模板构造函数定义为:

template<typename T> C<T>::C(T& rDataArg,
                             shared_ptr<C<T>>& rPArg
                             ):rData(rDataArg),
                               rP(rPArg)
                            {}

对于以上定义,我-Wreorder从g ++编译器收到以下警告:

警告:字段“ rData”将在字段“ rP”之后初始化[-Wreorder]

我在构造函数定义中颠倒了初始化的顺序,警告消失了。

由于模板类的两个成员都是引用,所以我很好奇为什么构造函数中的初始化应遵循编译器指定的顺序。

请分享您的想法。

讲故事的人-Unslander Monica

由于模板类的两个成员都是引用,所以我很好奇为什么构造函数中的初始化应遵循编译器指定的顺序。

它不是由编译器指定的,而是由指定的您在此处指定它:

template<typename T>
class C{
  private:

    T& rData;               // first
    shared_ptr<C<T>>& rP;   // second 
};

成员将始终通过声明顺序进行初始化。当一个错误最终取决于另一个不确定价值的错误时,它是常见的错误来源。警告试图帮助您防止这种情况。尽管在您的特定情况下这不是问题,因为成员不依赖于彼此的初始化顺序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

镖。子类和构造函数初始化器列表

来自分类Dev

构造函数初始化器列表-可以工作吗?

来自分类Dev

构造函数初始化器列表与昂贵的操作

来自分类Dev

在构造函数初始化器中使用map的初始化器列表

来自分类Dev

列表初始化程序和可变参数构造函数

来自分类Dev

显式构造函数和嵌套的初始化列表

来自分类Dev

C ++初始化构造函数初始化器列表中的模板数组

来自分类Dev

在类声明或构造函数初始化器列表中初始化简单成员

来自分类Dev

Kotlin和构造函数,初始化

来自分类Dev

基本/默认构造函数与构造函数初始化列表

来自分类Dev

向量构造函数对:初始化列表与显式构造

来自分类Dev

如何在构造函数的成员初始化器列表中调用两个函数?

来自分类Dev

C ++中的初始化程序列表和类初始化。我有无参数构造函数,但仍必须使用初始化列表?

来自分类Dev

C ++ 11统一初始化:初始化列表和多参数构造函数之间的歧义?

来自分类Dev

构造函数的成员初始化器列表不能包含超类的成员?

来自分类Dev

在构造函数初始化器列表中使用大括号了解奇怪的语法

来自分类Dev

具有复杂分配的C ++构造函数初始化器列表

来自分类Dev

构造函数初始化器列表中未知长度的数组

来自分类Dev

使默认构造函数和初始化程序列表并排工作

来自分类Dev

初始化程序列表和构造函数调用顺序

来自分类Dev

带有初始化列表的结构模板和构造函数

来自分类Dev

C ++ 11使可变参数构造函数了解初始化列表的初始化列表

来自分类Dev

使用初始化列表和超类构造函数声明子类构造函数的正确方法

来自分类Dev

空向量的构造函数列表初始化

来自分类Dev

构造函数初始化列表评估顺序

来自分类Dev

在构造函数初始化列表中使用 std::variant

来自分类Dev

构造函数初始化列表中的循环依赖

来自分类Dev

构造函数成员初始化列表说明

来自分类Dev

std :: map初始化程序列表构造函数

Related 相关文章

  1. 1

    镖。子类和构造函数初始化器列表

  2. 2

    构造函数初始化器列表-可以工作吗?

  3. 3

    构造函数初始化器列表与昂贵的操作

  4. 4

    在构造函数初始化器中使用map的初始化器列表

  5. 5

    列表初始化程序和可变参数构造函数

  6. 6

    显式构造函数和嵌套的初始化列表

  7. 7

    C ++初始化构造函数初始化器列表中的模板数组

  8. 8

    在类声明或构造函数初始化器列表中初始化简单成员

  9. 9

    Kotlin和构造函数,初始化

  10. 10

    基本/默认构造函数与构造函数初始化列表

  11. 11

    向量构造函数对:初始化列表与显式构造

  12. 12

    如何在构造函数的成员初始化器列表中调用两个函数?

  13. 13

    C ++中的初始化程序列表和类初始化。我有无参数构造函数,但仍必须使用初始化列表?

  14. 14

    C ++ 11统一初始化:初始化列表和多参数构造函数之间的歧义?

  15. 15

    构造函数的成员初始化器列表不能包含超类的成员?

  16. 16

    在构造函数初始化器列表中使用大括号了解奇怪的语法

  17. 17

    具有复杂分配的C ++构造函数初始化器列表

  18. 18

    构造函数初始化器列表中未知长度的数组

  19. 19

    使默认构造函数和初始化程序列表并排工作

  20. 20

    初始化程序列表和构造函数调用顺序

  21. 21

    带有初始化列表的结构模板和构造函数

  22. 22

    C ++ 11使可变参数构造函数了解初始化列表的初始化列表

  23. 23

    使用初始化列表和超类构造函数声明子类构造函数的正确方法

  24. 24

    空向量的构造函数列表初始化

  25. 25

    构造函数初始化列表评估顺序

  26. 26

    在构造函数初始化列表中使用 std::variant

  27. 27

    构造函数初始化列表中的循环依赖

  28. 28

    构造函数成员初始化列表说明

  29. 29

    std :: map初始化程序列表构造函数

热门标签

归档