オブジェクト指向の C++ クラスで割り当て用の小さなプログラムを作成しました。このプログラムでは、複素数の大きさを表示する関数を作成する必要がありました。このように書くと動作し、パラメータに引数なしで書く方法は知っていますが、コードに機能上の問題があるかどうかを知りたいです (呼び出しオブジェクトと引数は同じオブジェクトです)。
// displays the magnitude of a complex number
void Complex::magnitude(Complex c) const {
cout << "\nMagnitude of "; c.display(); cout << " = ";
cout.precision(3); cout.setf(std::ios::fixed, std::ios::floatfield);
cout << sqrt(pow(static_cast<double>(c.real), 2) +
(pow(static_cast<double>(c.imag), 2)) ) << "\n";
} // end function magnitude
呼び出し元のオブジェクトと引数として c1 を使用した冗長部分は次のとおりです。
c1.magnitude(c1);
Magnitude() の引数として c1 を使用せずにこのコードを記述する方法と、引数を削除して "c" を削除するだけでよいことを知っています。関数から、それはまだ同じように動作します。私の質問は、プログラムがこのように書かれている場合、これは機能的に問題になるのでしょうか?