From: http://blog.csdn.net/qtyl1988/article/details/6818325

先看看我为二叉树写的结点类:

template <class ElemType>
class TreeNode
{
private:TreeNode* lchild;TreeNode* rchild;
public:ElemType data;TreeNode(const ElemType& item,TreeNode* lptr=NULL,TreeNode* rptr=NULL):data(item),lchild(lptr),rchild(rptr){ }~TreeNode(){ }TreeNode*& LeftChild(){return lchild;}TreeNode*& RightChild(){return rchild;}
};

好了,现在单看其中的构造函数:

TreeNode(const ElemType& item,TreeNode* lptr=NULL,TreeNode* rptr=NULL):  data(item),lchild(lptr),rchild(rptr){ }

有问题吗?有!编译一下,立马出现warning,全文记不清了,但是肯定有这么两个短语:"will be initialized after/when initialized here"。啥意思?其实我也没理解。然后上网搜,答案出来了,你需要把这个构造函数的初始化列表改一改:

TreeNode(const ElemType& item,TreeNode* lptr=NULL,TreeNode* rptr=NULL):  lchild(lptr),rchild(rptr),data(item){ }

其实gcc给的这个warning就是为了提醒你,初始化列表中数据成员的初始化顺序应该和你在类的声明中给出数据成员的顺序一致!用英语说,就是“Make sure the members appear in the initializer list in the same order as they appear in the class!”(这句话来自我找到答案的那个网站。)

当然,你还可以不使用初始化列表,而把初始化数据成员的工作放在构造函数体内。不过或许你需要为此重载赋值操作符“=”。

话又说回来,为什么初始化列表的顺序还有讲究?为什么会这样?

gcc compiler warning: “will be initialized after/when initialized here”相关推荐

  1. linux gcc忽略警告,gcc 禁止warning

    gcc 禁止warning 熟悉windows编程的人都知道,禁止编译器输出某个warning,在代码中可以这样 #pragma warning( disable 号码) 例如 #pragma war ...

  2. Ubuntu Linux 安装 GCC Compiler

    Ubuntu Linux 安装 GCC Compiler Auto-Configuration Error: Cannot find gcc or CC; either correct your pa ...

  3. Asset Catalog Compiler Warning Group

    今天下午在消除项目各类警告的时候,发现了下面这类警告: Asset Catalog Compiler Warning Group 一.有一类警告是这样的:Xcode把它叫做Ambiguous Cont ...

  4. [18]Debian Linux Install GNU GCC Compiler and Development Environment

    # apt-get install build-essential # gcc -v # make -v 转载于:https://www.cnblogs.com/smartvessel/archive ...

  5. LittleVGL(LVGL)学习笔记——PC 模拟器的安装和使用(CodeBlocks)

    目录 一.简介 1.LittleVGL 所支持的 IDE 软件种类: 2.需要的工具: 二.安装配置软件和环境 1.littleVGL 模拟器库 2.安装CodeBlocks 三.创建工程项目 四.配 ...

  6. (GCC)STM32基础详解之内存分配

    1.软硬件说明 硬件使用STM32F103ZET6最小系统板. 软件: 代码编辑器:VSCode Debug仿真:Ozone 基础工程生成:STM32CubeMX 交叉编译链:arm-none-eab ...

  7. gcc选项 和 gdb 使用

    CC 编译详解 GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序.Gcc不仅功能强大,而且可以编译如C.C++.Obje ...

  8. 各个层次的gcc警告

    各个层次的gcc警告 从上到下覆盖 变量(代码)级:指定某个变量警告 int a __attribute__ ((unused)); 指定该变量为"未使用的".即使这个变量没有被使 ...

  9. 《Linux操作系统-基础笔记》第6章 编译调试工具(GCC、GDB)

    6.1 GCC 6.1.1简介 GCC 的意思也只是 GNU C Compiler 而已.经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言:它现在还支持 Ada 语言.C++ 语言.Java ...

最新文章

  1. 2017年全球光伏需求有望首次突破100吉瓦
  2. 连续时间傅里叶变换(FT)
  3. int *ptr=(int *)(a+1)问题的探讨
  4. Elasticsearch 教程--入门
  5. Silverlight中服务通信方式的选择(WCF、Data Service、Ria Service)
  6. 人体反应测试仪 c语言,人体反应速度测试仪毕业设计说明
  7. 每个线程只对一个数据操作就不会出现线程安全问题-------------成员变量,用来计算累加的和...
  8. 3-8:常见任务和主要工具之格式化输出
  9. 【C++】C++中的迭代器
  10. 日语学习  「そっと」 和 「こっそり」 的区別
  11. c++多线程——线程启动
  12. 在团队中我的索引卡任务
  13. android俄罗斯方块开发代码,基于Android的俄罗斯方块开发(附源码)
  14. 容器时代的DevOps部署-普元DevOps
  15. 平面波超声成像 (Matlab Filed II仿真)
  16. 20220529 使用python分割pdf文件
  17. 本人有51SAP培训机构全套SAP培训课程教材和视频, 欲转手
  18. TEST | 运用position:absolute做一张太极图
  19. 夜深人静写算法(四十九)- 高斯消元
  20. AD转换汇编语言模数转换实验

热门文章

  1. Oracle Row cache lock图解
  2. Linux 设备管理和进程管理
  3. 在Java里怎将字节数转换为我们可以读懂的格式?
  4. leetcode 1047. 删除字符串中的所有相邻重复项(栈)
  5. leetcode1237. 找出给定方程的正整数解(二分法)
  6. leetcode1276. 不浪费原料的汉堡制作方案(贪心)
  7. Webpack初学者介绍
  8. hitchhiker部署_《 Hitchhiker的Python机器学习指南》
  9. 数据分布策略_有效数据项目的三种策略
  10. (私人收藏)python学习(游戏、爬虫、排序、练习题、错误总结)