if (p.tu != 0 && p.mau != 1)os << "/" << p.mau; os << "/" << p.mau;
return os;
4/8/2009 Lập Trình Hướng Đối Tượng 68
Phép tốn << và >>
void main() {
PhanSo a, b;
cout << “Nhap phan so a: ”; cin >> a; cout << “Nhap phan so b: ”; cin >> b;
cout << a << " + " << b << " = " << a + b << "\n"; cout << a << " - " << b << " = " << a - b << "\n"; cout << a << " * " << b << " = " << a * b << "\n"; cout << a << " / " << b << " = " << a / b << "\n"; }
Ví dụ phép tốn << và >>: Lớp Stringclass String class String { char *p; public: String(char *s = "") {p = strdup(s);}
String(const String &s2) {p = strdup(s2.p);} ~String() {delete [] p;}
String& operator = (const String& p2);
friend String operator +(const String &s1, const String &s2);
friend istream& operator >> (istream &i, String& s);
friend ostream& operator << (ostream &o, const String& s);
4/8/2009 Lập Trình Hướng Đối Tượng 70
Ví dụ phép tốn << và >>: Lớp String
const MAX = 512;
istream & operator >> (istream &is, String& s){ { char st[MAX]; is.getline(st,sizeof(s)); is.ignore(); s = st; return is; }
ostream & operator << (ostream &o, const String& s) String& s)
{
return o << s.p;} }
Phép tốn << và >>
• Phép tốn << và >> cũng cĩ thể được định nghĩa với tốn hạng thứ nhất thuộc lớp đang xét, khơng thuộc tốn hạng thứ nhất thuộc lớp đang xét, khơng thuộc lớp ostream hoặc istream. Trong trường hợp đĩ, ta dùng hàm thành phần. Kiểu trả về là chính đối tượng ở vế trái để cĩ thể thực hiện phép tốn liên tiếp.