我已经写 c 好几年了,只是为了一些需要而进入 c++ !我的书是 C++ Primer 5/e,我已经达到了关于构造函数转换的主题并且遇到了一些问题
在 C++ 中,我们有多种类型的转换。像 static_cast、dynamic_cast 一样,我们也有类似函数的转换,它是一种显式转换。
class Sales_data{
public:
//C++11 feature,ask compiler to create a default constructor for us
Sales_data() = default;
Sales_data(const std::string &s, unsigned n, double p):
bookNo(s), units_sold(n), revenue(p*n);
explicit Sales_data(const std::string &s): bookNo(s){}
explicit Sales_data(std::istream&);
Sales_data combine(const Sales_data &item);
private:
std::string bookNo; // implicitly initialized to the empty string
unsigned units_sold;
double revenue;
};
std::string s 是一个 ISBN。第四个从标准输入读取 ISBN
我知道没有明确的,以下陈述是合法的。
item.combine(string("ISBN NUMBER"));
item.combine(cin);
//error: need two conversion const char *->temporary string-> temporary Sales_item
item.combine("ISBN NUMBER");
我只是不明白使最后两个构造函数显式有什么好处?
http://www.cplusplus.com/reference/vector/vector/vector/
我不明白为什么某些向量的构造函数被声明为显式?是什么原因?