C++该在什么时候定义构造函数

本篇内容主要讲解“C++该在什么时候定义构造函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++该在什么时候定义构造函数”吧!

创新互联建站是专业的向阳网站建设公司,向阳接单;提供成都网站设计、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行向阳网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

C.40:如果类包含不变式,则定义构造函数
Reason(原因)

这就是构造函数存在的目的。 

Example(示例)
 
class Date {  // a Date represents a valid date
             // in the January 1, 1900 to December 31, 2100 range
   Date(int dd, int mm, int yy)
       :d{dd}, m{mm}, y{yy}
   {
       if (!is_valid(d, m, y)) throw Bad_date{};  // enforce invariant
   }
   // ...
private:
   int d, m, y;
};

在构造函数中通过Ensure表现不变式通常都是一个好主意。   

Note(注意)

为了方便起见,即使类不包含不变式也可以为类定义构造函数。 

struct Rec {
   string s;
   int i {0};
   Rec(const string& ss) : s{ss} {}
   Rec(int ii) :i{ii} {}
};

Rec r1 {7};
Rec r2 {"Foo bar"};
   
Note(注意)

C++11的初始化列表消除了很多构造函数存在的必要性。例如: 

struct Rec2{
   string s;
   int i;
   Rec2(const string& ss, int ii = 0) :s{ss}, i{ii} {}   // redundant
};

Rec2 r1 {"Foo", 7};
Rec2 r2 {"Bar"};

Rec2的构造函数是多余的。同时成员初始化器提供的int的默认值会做得更好。

Enforcement(实施建议)
  • 如果类包含用户定义的拷贝操作但是没有提供构造函数(用户定义的拷贝是类具有不变式的明显标志)

到此,相信大家对“C++该在什么时候定义构造函数”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


网站标题:C++该在什么时候定义构造函数
标题来源:http://pwwzsj.com/article/jgcics.html