主题:菜鸟问下一个类自动转换与强制转换的问题
ww3355267
[专家分:0] 发布于 2010-06-03 22:47:00
书上说如果在声明中使用explicit关键字时则stonewt(doudle)(类构造函数)将只可以用于下面的隐士转换
将stonewt对象初始化为double的值时
将double对象复制给stonewt对象时
将double值传递给接受stonewt参数的函数中
问下这三句话的意义到底是什么小弟愚笨拜托老各位哥哥姐姐
回复列表 (共3个回复)
沙发
雪光风剑 [专家分:27190] 发布于 2010-06-03 23:19:00
就是
对于1 stonewt a=1.32
2 double b=1.32
stonewt a=b
3 void fun(stonewt)
fun(1.32)
板凳
ww3355267 [专家分:0] 发布于 2010-06-03 23:28:00
谢谢哥哥啊
3 楼
bruceteen [专家分:42660] 发布于 2010-06-04 16:06:00
"将只可以用于下面的隐士转换"
------ 你看的是什么书呀?不要被骗了,所有隐式转化都不允许
struct stonewt
{
explicit stonewt( double )
{
}
};
void foo( stonewt )
{
}
int main()
{
stonewt x(1.2); // 只有这个才是正确的
stonewt a = 1.2; // 错误
a = 1.2; // 错误
foo( 1.2 ); // 错误
return 0;
}
我来回复