请问下C++中结构体这种写法是什么意思

良人当归 2018-02-08 03:58:49
struct BinaryTreeNode
{
T _data;
BinaryTreeNode<T>* _leftchild;
BinaryTreeNode<T>* _rightchild;

BinaryTreeNode(const T& x)//构造函数
:_data(x)
, _leftchild(NULL)
, _rightchild(NULL)
{}
};
...全文
409 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
良人当归 2018-02-08
  • 打赏
  • 举报
回复
引用 2 楼 sdghchj 的回复:
顶楼写法是在初始化列表中初始化成员变量,是建议的用法,当然肯定是效率高的写法。 你1楼的写法是在构造函数体内给成员变量赋值,而不是给成员变量初始化,即便是你没在初始化列表上对成员变量进行初始化,编译器也会在该处对成员变量进行初始化。 总结地说:上面的写法只需要对成员变量进行一次初始化,下面的写法是先对成员变量进行默认初始化,然后再进行赋值。
懂了懂了,谢谢大神
sdghchj 2018-02-08
  • 打赏
  • 举报
回复
顶楼写法是在初始化列表中初始化成员变量,是建议的用法,当然肯定是效率高的写法。 你1楼的写法是在构造函数体内给成员变量赋值,而不是给成员变量初始化,即便是你没在初始化列表上对成员变量进行初始化,编译器也会在该处对成员变量进行初始化。 总结地说:上面的写法只需要对成员变量进行一次初始化,下面的写法是先对成员变量进行默认初始化,然后再进行赋值。
良人当归 2018-02-08
  • 打赏
  • 举报
回复
上面的写法和下面这种有什么差别呢,还是说意思一样写法不同而已
BinaryTreeNode(const T& x)//构造函数
{
_data = x;
_leftchild = NULL;
_rightchild = NULL;
}
下载时请看下面说明,对写一个动态的内存池很有帮助。 这是一个用C++语言链表的方法实现的一个静态内存池代源码。原理就是先向系统申请一块大内存,然后把这一大块分隔成相等的很多小块,然后在这这些小块的首地址部份放一个结构体结构体有一个值是用来标明这一小块是否使用。在这里存放你要放存的数据就是用结构体首地址加结构体自身长度就得到要放数据的首地址了.具体看代码的实现吧。我说一下动态内存池的写法。那是我给公司写的就不能上传了。结构体和静态内存池的这个差不多一样,只是增加了一个成员用来记录每一节点到大块内存的首地址在到本节点的一个尺寸长度值,做法也是先申请一块大内存。我先从释放说起吧,释放本节点时看自己的相邻节点是不是有释放掉的,如果有则合并掉他们成为一个块,如果碰到相邻的节点是另外的一个大块的话就不用合并了,原因他和自己所在的这一个大块内存上物理地址不是连续,这里一定要记住,释放过程算法怎么去写就看你的了。下面是分配写法要考虑的。在分配一小块内存给高层使用时,如果是分配在尾节点去分配的情况,那好办啊,尾节点如果不够分配了就直接从系统去申请一块大内存,节点连起来在分配,这里有可能会浪费掉一小块以结构体大小的一块内存,如果够分配就直接分配了。如果是在间节点去分配,这里就要将释放时合并的如果大于现在要分配的就拆开来用,如果拆开剩余的那一部份只有结构体大小就不用在拆开了。这些都是要考虑的东西,优化加快速度就看你自己了.可能看时不些不明白,看静态内存的写法后你就明白了.有时我也要下载其他人共享的东西,所以就一分吧.哈哈~~~~

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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