它被称为“隐式转换”还是“隐式转换”?

时间:2015-01-18 05:27:19

标签: c++ types casting

即使我在C ++教程中看到广泛使用的术语implicit casting来表示当你将某种类型分配给另一种类型时,类型的转换将自动(隐式)完成,但我经常听到它应该被称为implicit conversion而不是implicit casting。谁能告诉我两者之间的区别?

1 个答案:

答案 0 :(得分:3)

通常应称为隐式转换。

几乎是你唯一一次看到有人合理地谈论一个"隐式演员"在谈论班级中的演员操作员时。例如:

class T {
    int x;
public:
    T (int x) : x(x) {}
    operator int() { return x; }
};

有些人将此称为强制转换操作符,这是可以隐式调用的操作符。从C ++ 11开始,您可以向其添加explicit

class T {
    int x;
public:
    T (int x) : x(x) {}
    explicit operator int() { return x; }
};

...防止隐式调用。例如,这意味着:

T t(10);
int x = t; // works with the first version, not the second
int y = static_cast<int>(t); // works with either version

所以,如果有人正在比较/对比这两者,那么他们将第一个作为一个隐含的演员运算符&#34; (或类似的东西)区别于第二个。