1 struct TreeNode { 2 int val; 3 TreeNode *left; 4 TreeNode *right; 5 TreeNode(int x) : val(x), left(NULL), right(NULL) {} 6 };
第五行明明就是函数么,谁知道有关这种格式的介绍啊?谢谢啦
首先这是C++的语法,不是C语言的,struct这里和class类似
TreeNode(int x) : val(x), left(NULL), right(NULL) {} 是一个构造函数,
val(x), left(NULL), right(NULL) 叫类构造函数初始化列表
C++在介绍类的时候说过,类是取代结构体的.可见结构体的功能并非我们平时用到的这么简单,没有太多人知道结构体中也可以有自己的函数成员.在C++中允许结构体包含函数成员,而标准C不支持. 进一步发现,c++中甚至允许结构体中含有构造函数、重载、public/private等等.这样看来,结构体真的与类越来越靠近相似了!C++扩充了结构体的功能,但C++中为了介绍面向对象的类,却淡化了同样精彩的结构体。当我们写一些小程序而觉得没有必要去构造类的时候,选择结构体确实会方便很多。在c++中,结构体和类就一个区别,默认作用域不同:在class中定义的成员默认是private,在struct默认是public。
在结构体中,也可以像一般变量一样,包含函数指针变量,下面例子
1 struct ABC 2 { 3 int x,y; 4 int (*func)(int,int); //函数指针 5 };
为此结构体分配内存的大小是多少呢?在32位系统vc++下,是4*2+4字节,两个int型加一个函数的地址4字节。