August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
只接受一个参数的构造函数定义了一个从其参数类型向所属类的类型转换操作。这种转换是很有用的。例如:
但是,我们应谨慎地使用隐式转换,因为隐式转换可能会造成不可预料的后果。例如,我们目前定义的vector有一个接受int参数的构造函数。这意味着它定义了一个从int向vector的类型转换操作。例如:
看起来好像我们获得了预料之外的东西。幸运的是,我们能够通过一种简单的方式禁止将构造函数用于隐式类型转换。由关键字explicit定义的构造函数(即显式构造函数)只能用于对象的构造而不能用于隐式转换。例如:
为了避免意外的类型转换,我们和标准库都将vector的单参数构造函数定义为explicit的。很遗憾,构造函数默认不是explicit的;当我们拿不定主意时,应将所有单参数的构造函数定义为explicit的。
Read now
Unlock full access