3.5.8 转型构造函数与隐式类型转换
转型构造函数可替代函数重载机制。假设函数f的参数类型为Person对象:
那么编译器就在string对象s上调用该转型构造函数,以此来构造一个Person对象作为f的参数。因而,我们称Person类的转型构造函数支持隐式类型转换(implicit type conversion),也就是说,该构造函数采用隐藏方式将一个string转型为一个Person。之所以说它是隐式的,是因为这个转型动作由编译器来完成,不需要编程(www.cppentry.com)人员提供一个明确的转型操作。
目前,这种隐式类型转换的确为我们提供了方便,但有时隐式类型转换会导致一些无法预料的错误,而这些错误往往细微得难以察觉。在这种时候,我们宁愿关闭这种因转型构造函数的存在而导致的隐式类型转换动作,以保证程序的正确性。C++(www.cppentry.com)提供的关键字explicit可帮助我们实现这项功能。
例3-30
|
