在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 Plus》是Stephen Prata撰写的一本广受欢迎的C++编程教材,第六版提供了深入浅出的C++语言教程,旨在帮助初学者和有一定经验的程序员掌握这一强大的编程语言。附录中的源码文件是作者为配合书中的教学...
习题集 【中图法分类号】TP312-44 【内容提要】 C++Primer(FifthEdition)由三位C++大师StanleyB.Lippman、JoséeLajoie和BarbaraE.Moo合作完成,其中文译本《C++Primer中文版(第5版)》也已出版。与上一版相比,本书...
该视频是关于C++ Primer 这本书的猎豹详细视频初级高级讲解 该视频是关于C++ Primer 这本书的猎豹详细视频初级高级讲解 该视频是关于C++ Primer 这本书的猎豹详细视频初级高级讲解 该视频是关于C++ Primer 这本书的...
C++ Primer 中文版勘误表 C++ Primer 是一种广泛使用的 C++ 编程语言教程书籍,而中文版的 C++ Primer 也存在一些小错误。以下是 C++ Primer 中文版勘误表,总结了书中的一些错误和修订内容。 1. 第 79 页表 3-4 ...
C++ primer Plus的pdf资源
《C++ Primer Plus》是Stephen Prata撰写的一本广受欢迎的C++编程入门教程,它为初学者提供了全面且深入的C++语言学习指南。这本书涵盖了C++的基础知识,包括语法、控制结构、数据类型、类和对象、模板以及异常处理...
《C++ Primer 习题解答(第4版)》是一本深入C++编程语言的实践指导书籍,由Lippman, Lajoie, 和 Moo三位专家编写。这本习题解答是针对C++ Primer(第四版)教材的,旨在帮助读者巩固和深化对C++的理解。在学习C++的...
在《C++ Primer 中文第五版》中,读者还可以学习到基本的面向对象编程概念,如类、对象、继承、多态,以及如何利用STL(Standard Template Library)进行高效的数据处理。STL包括容器(如vector、list、set)、迭代...
《C++ Primer 5th》是C++编程领域的一部权威著作,由Lippman、Lajoie和 Moo三位专家合著。这本书以其深入浅出的讲解方式和丰富的实例,深受程序员们的喜爱。5th版更是针对C++11、C++14和C++17标准进行了全面更新,...
C++ Primer编程习题集(第5版),有习题和编程代码,供自我检验使用
《C++ Primer》第四版是C++编程领域的一本经典教材,由Lippman, Lajoie, and Moo三位作者合著。这本书深入浅出地介绍了C++语言的基础知识、中级概念以及高级特性,旨在帮助读者掌握现代C++编程技术。源代码文件包含...
《C++ Primer中文版》是一本为初学者设计的C++编程教材,旨在帮助读者深入理解和掌握C++语言。这本书的高清版本提供了清晰的文本和图表,使得阅读体验更佳,尤其适合长时间学习和查阅。目录的存在使得学习者能够快速...
### C++ Primer 类型转化 #### 一、类型转换概述 在C++中,类型转换是一种常见的编程技术,用于将一种数据类型转换为另一种数据类型。这种转换可以在编译时或运行时发生,并且可以是隐式的(自动进行)或显式的...
C++是一门强大、难学、令人痛苦,但又是如此美妙的编程语言,在工业界和学术界都可以使用,《C++ Primer(第5版)》即针对初学者,也同样适用于有一定编程经验的读者,第5版配备了C++11新标准,是C++粉丝们书架上...
《C++ Primer 第四版》是著名的C++编程语言教程,由Stanley B. Lippman、Josée Lajoie和Barbara E. Moo三位作者共同撰写。该书自出版以来,已成为广大程序员学习C++的必备书籍。第四版对前三版的内容进行了彻底的...
C++Primer中文第三版(C++从入门到精通)第一章的读书笔记,主要是C++程序、预处理器指示符、iostream库等的基础知识点读书笔记。
《C++ Primer》是C++编程领域的一本经典著作,第五版更是深受程序员喜爱的教程。这本书详尽地介绍了C++语言,从基础语法到高级特性,为读者提供了全面而深入的学习路径。作为英文版,它保持了原汁原味的专业表达,...
C++Primer中文版第5版
《C++ Primer》是有名的C++编程教材,其第五版(5th Edition)深入浅出地介绍了C++语言的基础知识以及C++11新标准的特性。这本书由Lippman、Lajoie和 Moo三位作者共同编写,是C++初学者和进阶者的重要参考书籍。 1....