是否可以定义基本类型的隐式转换行为?C++

Pra*_*tic 0 c++ casting

用户可以定义原语在基元之间的投射方式吗?或者他们如何投射用户定义的类型?("隐式铸造构造函数"?yikes)

这是一个假设的问题,很难想象一个用法,但也许人们可能想要影响投注如何投入布尔.

Ker*_* SB 7

您无法更改内置类型的行为方式.你不能像这样打破这种语言,就像你不能超越一个新operator+ints来做其他事情.

语言需要能够做出某些基本保证,以便可以编写可以依赖基本行为的库!

您可以将任何类型提供一个构造函数调用的一个参数,例如用户定义类型:

struct Foo
{
    Foo(T const &);
    // ...
};
Run Code Online (Sandbox Code Playgroud)

现在你可以说T x; Foo y = x;等等

你也可以反过来做,并提供转换类:

struct Foo
{
    operator S() const;
    // ...
};
Run Code Online (Sandbox Code Playgroud)

现在你也可以说,S s = y;.