c++ - 是否可以定义原始类型的隐式转换行为? C++

标签 c++ casting

用户可以定义原语如何在原语之间转换吗?或者他们如何将 转换为 用户定义的类型? (“隐式转换构造函数”?哎呀)

这是一个假设性问题,很难想象一种用法,但也许有人可能想影响 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/

相关文章:

c# - 通用转换类型不足以正确检索 "new"属性

c++ - 在同一个 dll 中需要 msvcr80.dll 和 msvcr80d.dll?

javascript - HTML5 数据属性将 null 和 undefined 转换为字符串

c - 使用 %lu 打印 int 类型 - C+XINU

c++ - 将析构函数信息存储到 void* 的合法方法

java - 类层次结构和对象之间的转换

c++ - 如何将 tr1/array 转换为 std::string?

c++ - 如何使用 uncrustify 缩进连续的函数参数?

c++ - 初始化 3d 字符数组

c++ - 为什么在 NDS 上整数处理速度比字节快?