C++默认构造函数有什么作用

本篇内容介绍了“C++默认构造函数有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联公司从2013年创立,公司以成都做网站、成都网站制作、系统开发、网络推广、文化传媒、企业宣传、平面广告设计等为主要业务,适用行业近百种。服务企业客户上千余家,涉及国内多个省份客户。拥有多年网站建设开发经验。为企业提供专业的网站建设、创意设计、宣传推广等服务。 通过专业的设计、独特的风格,为不同客户提供各种风格的特色服务。

C.44:默认构造函数最好简单而且不会抛出异常   

Reason(原因)

默认构造函数可以将内容设置到默认状态而不需要可能引起失败的操作,简化了错误处理和针对移动操作的推测。   

Example, problematic(问题示例)
template
// elem points to space-elem element allocated using new
class Vector0 {
public:
   Vector0() :Vector0{0} {}
   Vector0(int n) :elem{new T[n]}, space{elem + n}, last{elem} {}
   // ...
private:
   own elem;
   T* space;
   T* last;
};

这段代码整洁且普通,但是如果过在涉及到内存分配的错误之后生成一个空的Vector0对象时,可能会失败。同时,让默认的Vector表现为{new T[0], 0, 0}有些浪费。例如Vector0v[100]需要100次内存分配。   

100次内存分配似乎有些问题。译者的理解是只要一次分配100个整数的空间就好。

另外new T[0]有点奇怪。   

Example(示例) 
template
// elem is nullptr or elem points to space-elem element allocated using new
class Vector1 {
public:
   // sets the representation to {nullptr, nullptr, nullptr}; doesn't throw
   Vector1() noexcept {}
   Vector1(int n) :elem{new T[n]}, space{elem + n}, last{elem} {}
   // ...
private:
   own elem = nullptr;
   T* space = nullptr;
   T* last = nullptr;
};

使用{nullptr, nullptr, nullptr}让Vector1{}的代价更小,但是特殊的情况,(由于产生了没有数据的情况,译者注)需要运行时检查。在检测到错误之后将Vector1设为空的处理是小事情。

 Enforcement(实施建议)

提示抛出异常的构造函数。      

“C++默认构造函数有什么作用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


名称栏目:C++默认构造函数有什么作用
转载源于:http://hbruida.cn/article/jhides.html