命名空间类的操作重载

Operation overloading for namespaced classes

本文关键字:重载 操作 命名空间      更新时间:2023-10-16

所以假设我有以下类:

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./*.....*/简单地表示函数体(为简单起见省略(

  #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;
    }

希望我这次做得好