回 帖 发 新 帖 刷新版面

主题:菜鸟问下一个类自动转换与强制转换的问题

书上说如果在声明中使用explicit关键字时则stonewt(doudle)(类构造函数)将只可以用于下面的隐士转换 
将stonewt对象初始化为double的值时 
将double对象复制给stonewt对象时
将double值传递给接受stonewt参数的函数中 
问下这三句话的意义到底是什么小弟愚笨拜托老各位哥哥姐姐

回复列表 (共3个回复)

沙发

就是
对于1 stonewt a=1.32
2 double b=1.32
 stonewt a=b
3 void fun(stonewt)
fun(1.32)

板凳

谢谢哥哥啊

3 楼

"将只可以用于下面的隐士转换"
------ 你看的是什么书呀?不要被骗了,所有隐式转化都不允许

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;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册