名称空间标识符应该放在每个参数的前面吗?

时间:2013-10-27 01:47:08

标签: c++

例如,

Matrix.h

namespace Matrix
{
    class mat
    {
    public:
        mat(int row, int col);
        const mat &operator=(const mat &rhs);
    }
}

Matrix.cpp

Matrix::mat::mat(int row, int col)
{  // implementation here  }

const Matrix::mat &Matrix::mat::operator=(const mat &rhs)
{  // implementation here  }

以上代码将编译没有任何问题。问题是,我应该将名称空间标识符放在参数前面,例如const mat operator=(const Matrix::mat &rhs);
const Matrix::mat Matrix::mat::operator=(const Matrix::mat &rhs)?执行此操作的常规方法是什么以及为什么在不添加标识符的情况下进行编译?

2 个答案:

答案 0 :(得分:2)

只需定义代码IN命名空间

即可

Matrix.cpp

namespace Matrix {

  mat::mat(int row, int col)
  {  // implementation here  }

  mat& mat::operator=(const mat &rhs)
  {  // implementation here  }

} //namespace Matrix

答案 1 :(得分:1)

这纯粹是一种完全个人化的风格偏好。在过去的十年里,我与许多人一起工作,他们更喜欢这种风格。但是,大多数人似乎更喜欢其他方式。

如果您正在处理使用此约定的项目,那么请保持一致并执行相同操作。否则做你喜欢的事。但请记住,使用问题中描述的风格可能无法帮助您找到具有相同风格偏好的人。

人们通常做的是将定义放在与declarion相同的命名空间内,正如@billz在他的例子中所示。另一种方法是在提供类定义之前将using namespace Matrix;放在Matrix.cpp文件的顶部(而不是在标题中),尽管这有点不那么明确和时髦的方式,恕我直言。 / p>

希望这会有所帮助。祝好运! :)