当前位置: 网站首页 > 开发语言 > C/C++

C++中用户定义的转换

时间:1970-1-1 08:33:31来源: C/C++作者:admin 点击:0次 字体 [ С]

SmallInt tokVal = SmallInt( tok );
// static_cast: 调用 Token::operator tName()
char *tokName = static_cast< char * >( tok );

   (c)如果转换的目标(本例中的double)与转换函数的类型(本例中的int类型)不完全匹配,但目标类型可以通过标准转换序列到达,则仍可调用转换函数。

 extern void calc( double );
Token tok( "constant", 44 );
// 调用 tok.operator int() 吗? 是的
// int --> double 通过标准转换
calc( tok );

   (d)使用构造函数作为转换函数。

 extern void func( Number );
SmallInt si( 87 );
{
// 调用 Number( const SmallInt & )
func( si );
}

   当然,可通过在类的构造函数前设置explicit,以禁止将其用来执行隐式转换。


发表评论
验证码:
最新评论
相关文章
最热文章