私はC++でbigIntクラスを作成しました。いくつかの演算子をオーバーロードしている間、私はオブジェクトそのものを引数として渡す必要があります。私は*this
でこれを行うことができることを知っています。私は同じメンバ変数を持つ同じクラスの別のオブジェクトを作成し、それを引数として渡すこともできます。しかし、私は*this
をスキップして別のオブジェクトを作成できない方法はありますか?ここで オブジェクトをそのメンバ関数の1つに引数として渡すにはどうすればよいですか?
*this
を使用して、私が作ったコードです:
using namespace std;
class bigInt {
private:
string value;
public:
template<class T>
bigInt(T x) {
//.... .... ....constructor
}
bigInt operator+ (bigInt num) {
//... ... ... my code here
}
template<class T>
bigInt operator+ (T x) {
return *this + bigInt(x);
}
};
そして、ここで私はクラスBIGINTの別のオブジェクトを作成したコードです:
using namespace std;
class bigInt {
private:
string value;
public:
template<class T>
bigInt(T x) {
//.... .... ....constructor
}
bigInt operator+ (bigInt num) {
//... ... ... my code here
}
template<class T>
bigInt operator+ (T x) {
return bigInt(value) + bigInt(x);
}
};
私が行うことができる方法を教えてください*this
を使用せずに同じものを作成するか、別のオブジェクトを作成しますか?
N.B.私は、this
ポインタを使用することは、一般的にプログラミングの習慣としては不適切だと聞いています。それは本当ですか、そうではありませんか?それが本当であれば、悪い習慣とはみなされない場合がありますか?
"このポインタは一般的に悪いプログラミング実践と見なされています"という参照/リンクがありますか?現在のオブジェクトを参照する必要があるときは、正確に正しい方法であると確信しています –
メンバ関数ではなく名前空間スコープの 'operator +'を使用するのはなぜですか? –
適切なところで '* this'を使うことは何も問題ありません。あなたはおそらくconst参照としてあなたのパラメータを渡すべきです。 – md5i