bpw*_*621 8 c++ constructor casting
如果一个类有一个参数构造函数,我理解它是由构造函数隐式转换为适当上下文中的参数类型.定义转换运算符还会使类可转换为其他类型.问题
我看到我不明白方向性,两人在相反的方向上进行转换.作为后续
这两个是对立的:非显式单参数构造函数允许从参数类型自动类型转换 为类类型.转换运算符允许从类类型隐式转换.
如果没有特别要求,通常的智慧是避免两者.
小智 3
不,如果类具有单个参数,则构造函数可以从其参数的类型隐式转换。
至于你的其他问题:
是的,只要需要就可以。
我不太清楚你在问什么,但如果转换可以以任何一种方式进行,那就含糊不清。
您必须使用强制转换 - 构造函数不会这样做。
一般来说,如果您不希望从类自动转换为其他类型(大多数情况下您不需要),最好提供命名转换函数(ToString、ToInt、ToX),这些函数永远不会被编译器自动调用。
这引出了你的另外两个问题:
是的,使用命名函数来执行至少一项转换。std::string 就是这样做的 - 使用构造函数将 char * 转换为字符串,但另一种方式您需要使用命名的 c_str() 函数。
很不幸的是,不行。