3

例えば、

Matrix.h

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

マトリックス.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)どうかです。これを行うための規則的な方法と、識別子を追加せずにコンパイルする理由は何ですか?

4

2 に答える 2

1

これは完全に個人的なスタイルの好みです。私は過去 10 年間、そのスタイルを好む多くの人々と仕事をしてきました。ただし、ほとんどの人は他の方法を好むようです。

この規則を使用するプロジェクトに取り組んでいる場合は、一貫性を保ち、同じことを行ってください。それ以外の場合は、好きなことをしてください。ただし、質問で説明されているスタイルを使用しても、同じスタイルの好みを共有する人を見つけるのに役立つとは限らないことに注意してください.

@billz が彼の例で示したように、人々が通常行うことは、宣言と同じ名前空間内に定義を配置することです。もう 1 つの方法は、クラス定義を提供する前に (ヘッダーではなく) ファイルusing namespace Matrix;の先頭に配置Matrix.cppすることですが、これはあまり明示的でなくファンキーな方法ですが、私見です。

お役に立てれば。幸運を!:)

于 2013-10-27T02:01:08.577 に答える