繁体   English   中英

隐式转换和运算符重载

[英]Implicit conversion and operator overloading

我有以下代码:

struct helper {
    template<typename T> helper(T const&);
};

helper operator*(helper const&);

struct A {};

int main() {
    // (1)
    A a;
    sizeof(*a);

    // (2)
    int i;
    sizeof(*i);
}

情况(1)编译得很好,我知道它正在使用隐式转换为helper类型和给定的运算符重载。

但是,对于情况(2),我收到编译器错误:

invalid type argument of unary '*' (have 'int')

为什么隐式转换用于类型A但不用于int

如果不涉及用户定义的类型,则假定任何运算符都是内置运算符。 所以

helper operator*(helper const&);

i是内置类型(例如int )时,找不到*i

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM