c++ - 流插入/提取运算符重载函数的原型(prototype)属于哪里?

标签 c++ operator-overloading

假设它们没有作为 friend 函数实现。

class Foo
{
// in here?
ostream& operator<<( ostream&, const Foo & );
};

class Foo
{
};
// out here?
ostream& operator<<( ostream&, const Foo & );

为什么?

最佳答案

将它们声明为非成员友元函数或在 Foo 的周围名称中声明。您的第一个示例缺少关键要素: friend 。

原因是 C++ 查找要调用的函数(以及操作符)的方式:参数相关查找。

关于c++ - 流插入/提取运算符重载函数的原型(prototype)属于哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16258622/

相关文章:

c++ - 使用运算符重载运行简单示例的问题

c++ - 如何在自定义类中启用 'auto loops'?

Python:rtruediv 没有像我预期的那样工作

c++ - Perforce 的 C++ P4API 是线程安全的吗?

c++ - 包围区域算法的运行时错误

c++ - 条件运算符总是可以被 if/else 替换吗?

c++ - 我如何布局混合 C 和 C++ 的函数原型(prototype)

c++ - 断言不起作用

c++ - 为 std::unordered_map 中的 const std::reference_wrapper 重载 operator==

delphi - 为什么 Delphi 中的类不能使用运算符重载?