在C++ Primer的第393页提出了隐式类类型
注解里面有一句话:“可以用单个参数来调用的构造函数定义了从形参类型到类类型的一个隐式转换。
还是拿书上的例子来说事
class Sales_item{
public:
Sales_item(const std::string &book=""):
isbn(book),units_sold(0),revenue(0.0){ }---------------------(1)
Sales_item(std::istream &is);
};
上面的程序片段中定义了两个构造函数,他们都只有一个参数。
而后书上说
string null_book="9-999-99999-9";
item.same_isbn(null_book);--------------------------------------------------(2)
其实真正的隐式转换发生在item.same_isbn(null_book);这里,具体分析如下
首先来看看成员函数same_isbn的定义
bool same_isbn(const Sales_item &rhs) const
{ return isbn == rhs.isbn; }-------------------------------------------(3)
仔细观察可以发现成员函数same_isbn的形参类型是Sales_item,但是(2)语句中实参却是string,这样本来应该是错误的,但是编译器在这里就自作聪明了,在(1)中构造函数可以用一个string实参来创建一个Sales_item对象,所以在(2)中,null_book这个string调用了构造函数(1)创建了一个临时的对象,这个对象成了(2)的参数,整个这个过程就是隐式类类型转换。
所以(2)等价于item.same_isbn(Sales_item(null_book));
为了防止这样的问题发生,引进了explicit(明确的)来抑制。
呵呵,写完了。。。
多指教。
另外,贴上C++ Primer第四版中英文对照的资源
http://www.54rk.cn/d/Cpp_Primer4rd/toc.html
分享到:
相关推荐
C++Primer第五版习题答案+详解(完整版) C++Primer第五版习题答案+详解(完整版)
c++ primer plus 答案c++ primer plus 答案c++ primer plus 答案c++ primer plus 答案 c++ primer plus 答案
C++Primer Plus第六版的课后题练习题
C++primer 课后答案,习题对帮助记忆、理解很重要。内容高清,全面,带有书签,
C++Primer中文第三版(C++从入门到精通)第一章的读书笔记,主要是C++程序、预处理器指示符、iostream库等的基础知识点读书笔记。
C++ primer Plus的pdf资源
C++Primer中文版第5版
C++ Primer(5e,Addison Wesley,201208).epub 这是老外网站上刚泄露出来的正式版本(绝对的正式版,还有ISBN和出版日期),不是以前网上出现过的草稿 这本书的上一版(第4版)还是2005年的事了 拖了很多年之后,去年...
C++是一门强大、难学、令人痛苦,但又是如此美妙的编程语言,在工业界和学术界都可以使用,《C++ Primer(第5版)》即针对初学者,也同样适用于有一定编程经验的读者,第5版配备了C++11新标准,是C++粉丝们书架上...
12.4.4 隐式类类型转换 393 12.4.5 类成员的显式初始化 396 12.5 友元 396 12.6 static类成员 398 12.6.1 static成员函数 400 12.6.2 static数据成员 400 小结 403 术语 403 第13章 复制控制 405 13.1 复制构造函数...
该文件是c++ primer第五版本,为中文版本,可以利用该版本学习c++基础知识和c++11的特性
锻炼自己的全英文C++ primer第五版电子版,更加适合于有一定代码功底人士阅读,初学者(你要读也很棒棒)阅读难度较大。
自己看书练习编写的C++ Primer Plus(第6版)课后题答案
C++ Primer第五版 高清扫描pdf,压缩版,下载后解压即可
该视频是关于C++ Primer 这本书的猎豹详细视频初级高级讲解 该视频是关于C++ Primer 这本书的猎豹详细视频初级高级讲解 该视频是关于C++ Primer 这本书的猎豹详细视频初级高级讲解 该视频是关于C++ Primer 这本书的...
这个文件是我买的资料。我看过,和C++ primer plus 这本书的课后习题非常吻合。
c++primer第五版中文版课后答案(第12章)pdf格式,真正的c++primer习题集(第五版),用手机拍的,但是每个字都能看的很清楚
c++primer第四版练习答案完整版。
C++ Primer 第五版(中文版) 第1~11章课后习题答案(附上代码)
C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。 [1] C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的...