标签:c++11
类通过一个特殊的构造函数来控制默认初始化过程,这个函数就是默认构造函数,默认构造函数无需任何实参。我们可以显示的定义默认构造函数也可以让编译器为我们生成默认构造函数。默认构造函数以如下规则初始化累的数据成员:
class Sales_data {
public:
std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};如上所示,因为Sales_data为units_sold和revenue提供了初始值,所以合成默认构造函数将使用这些值来初始化对应的成员,而bookNo被默认初始化为一个空字符串。
合成默认构造函数只适用于非常简单的类,通常来说,我们需要为自定义类提供默认构造函数,因为:
default关键字:
class Sales_data {
public:
Sales_data() = default;
Sales_data(const std::string &s) bookNo(s) {}
Sales_data(const std::string &s, unsigned n, double p) :
bookNo(s), units_sold(n), revenu(p*n) {}
Sales_data(std::istream &);
std::string isbn() const { return bookNo; }
Sales_data& combine(const Sales_data&);
double avg_price() const;
private:
std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};在C++11标准中,如果我们需要默认的行为,可以通过在参数列表后来要求编译器生成默认构造函数。default既可以和声明一起出现在类的内部,也可以作为定义出现在类的外部。如果=default在类的内部,则默认构造函数是内联的,如果它在类的外部,则该成员函数默认情况下不是内联的。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:c++11
原文地址:http://blog.csdn.net/yamingwu/article/details/47746989