面试在线测试中的c++运算符重载问题

标签 c++ operator-overloading

我最近看到一个面试在线测试问题,我需要帮助。这不是我正在面试的工作的问题,我只是对答案感到好奇。提前致谢。

 #include <iostream>
    class Foo
    {
        //...
    };

    void staff(Foo& f)
    {
        //..
        std::out << f << endl; // output Foo object f
    }

问题是:

需要定义哪些运算符才能正确显示对象?

  1. std::ostream& operator <<(std::ostream&)作为类 Foo 的成员函数

  2. std::streambuf& operator << (std::ostream&, Foo const&)作为一个独立的重载运算符。

  3. void << operator<<(std::ostream& , Foo const&)作为一个独立的,重载

  4. std::ostream& operator << (std::ostream&, Foo const&)作为一个独立的,重载

  5. void std::operator<<(std::ostream&)作为类 Foo 的成员函数

最佳答案

std::ostream& operator << (std::ostream&, Foo const&);

您应该定义operator<<带有上述签名。

关于面试在线测试中的c++运算符重载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5294371/

相关文章:

c++ - 结构 vector C++

c++ - 没有参数特征名称的重载括号运算符

c++ - 确定在 C++ 代码中调用了哪些复制构造函数

c++ - 用于制作一组类型为 pair<int, int> 的元素的运算符重载

swift - 为 Swift 中的运算符转义闭包

c++ - C++ (Visual Studio 6) 中 operator< 和 operator[] 的默认返回值是什么?

c++ - 如何在C++中确定一个数的十位

c++ - 编译器生成的 move 构造函数的行为是什么?

c++ - 为什么我用reserve分配存储后不能迭代打印vector的内容?

c++ - 如何在不使用递归的情况下获得二叉树的最小高度?