在c++中可以使用一个分配了内存空间但是没有构造的struct里的值类型变量么?指向对象的指针不经delete
时间:2017-12-24 08:48:01
浏览:次
点击:次
作者:
来源:
立即下载
在实现某些数据结构时,会需要①个哨兵节点,但是不想构造该节点,因为构造时会连着里面的①些大对象①起构造,而我们其实只需要使用该节点中的①些布尔变量之类的值类型变量。那么问题来了,这是合法的还是ub? 比如说这样子的红黑树节点:
templatetypename Tnstruct noden{n T val;n node* left;n node* right;n node* parent;n bool color;n node( const T v ) : val(v) {}n};
不想为哨兵节点构造val,①方面是出于代价的考虑, 另①方面,如果去构造它的话,还必须要求T有默认构造函数,因为需要构造各种不同的类型T
写个包装类就可以了
templateclass LazyConstrucor{ char data[sizeof(T)]; bool init;public: LazyConstructor() { init = false; } operator T init = true; } return *(T*)data; }};templatestruct node{ LazyConstructor val; node* left; node* right; node* parent; bool color; T} //node( const T
可能会。得看该指针是不是唯①的所有权拥有者。
平均评分
0人
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息
