c++struct语法

WHILEFALSETRUE 2019-02-16 05:47:32
下为两种二叉树节点的结构体:

struct Node{
T data;
Node* left;
Node* right;
Node():data(T()),left(NULL),right(NULL){ }
Node(const T& t):data(t),left(NULL),right(NULL){ }
};


struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

小白想请问:两种方法最后一/两句的作用和他们的区别是什么?
...全文
197 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cpp_white 2019-02-23
  • 打赏
  • 举报
回复
第一个结构体里面的node()是表示Node的默认构造函数,如果在定义一个对象的时候不在后面添括号,则调用这个函数,第二个是表示接收一个参数的构造函数,这是重载的一种体现,c++可以根据参数类型和个数的不同以确定使用哪个函数,函数名和括号组成的部分叫函数头,后面用冒号隔空的叫初始化列表,可以用来初始化const和非const变量,语法是:成员名(参数名或者表达式),函数后面的大括号表示这个函数的函数体,第二个结构体的构造函数也是只接收一个参数 (一般来说,编译器会为一个类自动生成默认构造,该函数不实现任何功能,但是如果你对他的其他构造进行实现,则不自动生成默认构造,即不允许这种语法 TreeNode t; ) 结构常量体里面的T应该是模板参数或者typedef出来的数据类型
sfd1218 2019-02-16
  • 打赏
  • 举报
回复
搜一下“构造函数”就知道了

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧