在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星
用户评分:
发表评论

评论

  • 暂无评论信息