c++ - 转换函数可以是非成员函数吗

标签 c++ casting operator-overloading

是否可以将类定义之外的从一种类型到另一种类型的转换运算符定义为非成员函数?我知道其他运算符(如 operator-)是可能的,但强制转换运算符是不可能的。例如,对于两个类 A 和 B,我尝试在 A 和 B 范围之外定义转换运算符,如下所示:

operator A(const B& b)
{
    A a(....);
    return a;
}

最佳答案

不可以,转换函数必须是成员函数。

来自 C++11,[class.conv.fct]/1:

A member function of a class X having no parameters with a name of the form [operator conversion-type-id] specifies a conversion from X to the type specified by the conversion-type-id. Such functions are called conversion functions.

没有其他转换函数,特别是没有非成员转换函数。

关于c++ - 转换函数可以是非成员函数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26994485/

相关文章:

c++ - 为什么这些具有外部链接的名称不表示同一实体?

c++用指针反向打印数组内容 - 为什么这种方法有效?

c++ - C++中什么时候发生隐式类型转换?

c++ - 重载运算符 : Matrix Addition

c++ - 主要变量类型在运行时确定的函数

Python,如何将现有的父类对象转换为子类对象

java - JLS 与类型转换相关

c# - 我是否更改了被覆盖的 `==` 运算符的意图?

c++ - 修改 std::vector 函数(继承?)

c++ - Android NDK 要求在源文件中包含绝对路径