用户可以定义原语如何在原语之间转换吗?或者他们如何将 转换为 用户定义的类型? (“隐式转换构造函数”?哎呀)
这是一个假设性问题,很难想象一种用法,但也许有人可能想影响 int 转换为 bool 的方式。
最佳答案
您无法更改内置类型的行为方式。您不能像那样破坏语言,就像您不能为执行其他操作的 int
重载新的 operator+
一样。
语言需要能够做出某些基本保证,以便可以编写依赖于基本行为的库!
您可以通过提供可使用一个参数调用的构造函数将任何类型转换为用户定义的类型,例如:
struct Foo
{
Foo(T const &);
// ...
};
现在你可以说,T x; Foo y = x;
等
您也可以执行相反的操作并提供来自您的类的转换:
struct Foo
{
operator S() const;
// ...
};
现在你也可以说,S s = y;
。
关于c++ - 是否可以定义原始类型的隐式转换行为? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8763026/