C++演算子リロード3
1822 ワード
入出力フロー演算子の再ロード
コード#コード#
関連説明
ostreamというクラスにはsetf()関数があり、数値出力時にフラグビットを付けるかどうかを設定できます.【具体的にはsetf関数を参照してください】
ostreamというクラスにはunsetf()関数も用意されており、あるフラグビットをキャンセルすることができます.
setfを使用して複数の1+2 iを出力すると
「+1+2 i」と表示されます.どのようにして実部の前の正号を消しますか?この場合、複数の実部と虚部をそれぞれ出力する2つの文が必要です.実部を出力する前に、
コード#コード#
#include
#include
#include
using namespace std;
class MyComplex {
public:
double a, b;
MyComplex() {};
MyComplex(double A, double B) {
a = A;
b = B;
}
MyComplex operator+(const MyComplex& c);
MyComplex operator-(const MyComplex& c);
MyComplex operator*(const MyComplex& c);
MyComplex operator/(const MyComplex& c);
friend ostream& operator <>(istream& is, MyComplex& z);
};
ostream& operator <>(istream& is, MyComplex& z) {
is >> z.a >> z.b;
return is;
}
MyComplex MyComplex::operator+(const MyComplex& c) {
return MyComplex(a + c.a, b + c.b);
}
MyComplex MyComplex::operator-(const MyComplex& c) {
return MyComplex(a - c.a, b - c.b);
}
MyComplex MyComplex::operator*(const MyComplex& c) {
return MyComplex(a * c.a, b * c.b);
}
MyComplex MyComplex::operator/(const MyComplex& c) {
return MyComplex(a / c.a, b / c.b);
}
int main() {
MyComplex z1, z2;
cin >> z1;
cin >> z2;
cout << z1 <::max(), '
');
cin.get();
#endif
return 0;
}
関連説明
ostreamというクラスにはsetf()関数があり、数値出力時にフラグビットを付けるかどうかを設定できます.【具体的にはsetf関数を参照してください】
ostream os;
os.setf(std::ios::showpos);
os << 12; // +12
ostreamというクラスにはunsetf()関数も用意されており、あるフラグビットをキャンセルすることができます.
setfを使用して複数の1+2 iを出力すると
os.setf(std::ios::showpos);
os << real << image << "i";
「+1+2 i」と表示されます.どのようにして実部の前の正号を消しますか?この場合、複数の実部と虚部をそれぞれ出力する2つの文が必要です.実部を出力する前に、
os.unsetf(std::ios::showpos);
を使用して虚部を出力する前に、os.setf(std::ios::showpos);
を使用