C++に混在する演算子の再ロード
2391 ワード
例:通常のリロード:
上記の例では、通常のリロード関数が使用されていることが明らかになったため、コードは読みにくく、演算子のリロードが採用されています.
#include
using namespace std;
class Complex
{
public:
Complex();// //
Complex(double r,double i);
// , private
Complex complex_add(Complex &d);//
void print();
private:
double real;
double imag;
};
/* , , ,
* , :: 。
* 。
*/
Complex::Complex()
{
real=0;
imag=0;
}
Complex::Complex(double r,double i)
{
real=r;
imag=i;
}
Complex Complex::complex_add(Complex &d)
/* Complex Complex_add(Complex &d)
* error: ‘double Complex::real’ is private
*::
* Complex 。
*/
{
Complex c;
c.real=real+d.real;
c.imag=real+d.imag;
return c;
}
void Complex::print()
{
cout<< "(" << real << "," << imag << "i)
"<
上記の例では、通常のリロード関数が使用されていることが明らかになったため、コードは読みにくく、演算子のリロードが採用されています.
#include
using namespace std;
class Complex
{
public:
Complex();// //
Complex(double r,double i);
// , private
Complex operator+(Complex &d);//
void print();
private:
double real;
double imag;
};
/* , , ,
* , :: 。
* 。
*/
Complex::Complex()
{
real=0;
imag=0;
}
Complex::Complex(double r,double i)
{
real=r;
imag=i;
}
Complex Complex::operator+(Complex &d)
/* Complex Complex_add(Complex &d)
* error: ‘double Complex::real’ is private
*::
* Complex 。
*/
{
// Complex c;
// c.real=real+d.real;
// c.imag=real+d.imag;
// return c;
return Complex(real+d.real,real+d.imag);
}
void Complex::print()
{
cout<< "(" << real << "," << imag << "i)
"<