命名空间类的操作重载

时间:2015-07-28 13:10:56

标签: c++ namespaces operator-overloading

所以,假设我有以下课程:

namespace Example
{
    class Bar {};
}

现在,如果我想重载类Bar的运算符,我应该这样做:

 namespace Example
 {
    class Bar {};

    ostream& operator<<(ostream& os, const Bar& b)
    {/*..........*/}
}

或者我应该这样做:

namespace Example
{
    class Bar {};
}

ostream& operator<<(ostream& os, const Example::Bar& b)
{/*..........*/}

如果我应该做上述任何一项,请发布解释为什么应该这样做。

P.S。 /*.....*/仅表示函数体(为简单起见而省略)

1 个答案:

答案 0 :(得分:-2)

  #include<iostream>
  using namespace std;

    namespace Example
     {
        class Bar
        {//........

friend ostream& operator<<(ostream& os, const Bar& b);
};


    }

    ostream& operator<<(ostream& os, const Example::Bar& b)
        {//..........
        }

    int main() {
        Example :: Bar b;
//        out<<b;  I am not sure About this 
        return 0;
    }

希望这次我做得很好