[OOP] Nạp chồng toán tử I/O trong C++

Toán tử I/O được sủ dụng để nhập, xuất dữ liệu cho đối tượng.

Như trong bài viết chọn lựa phương thức nạp chồng cho toán tử ta biết để nạp chồng toán tử I/O ta phải sử dụng friend function.

Nạp chồng toán tử ‘<<‘

Toán tử ‘<<‘ sử dụng để xuất dữ liệu của đối tượng ra standard output.

Toán tử ‘<<‘ có 2 toán hạng với toán hạng bên trái là std::out 1 đối tượng của ostream, toán hạng bên phải là đối tượng cần xuất dữ liệu ra standard output.

Khi đó hàm toán tử của ‘<<‘ có dạng

friend std::ostream& operator<< (std::ostream& out, object);

Ví dụ:


#include <iostream>

#include <string>

using namespace std;

class Complex

{

private:

   //phần ảo
   int vir;

   //phần thực
   int real;

public:

   Complex(int vir, int real)

   {

      this->vir = vir;

      this->real = real;

   }

   //Nap chong toan tu <<
   friend ostream& operator<<(ostream& out, Complex& complex)

   {

       out << complex.real << " + " << "j" << complex.vir;

      return out;

   }
};

int main()

{

   Complex cp(4, 5);

   cout << cp;

   return 0;

}

Kết quả:

5 + j4

Nạp chồng toán tử ‘>>’

Toán tử ‘>>’ sử dụng để nhập dữ liệu của đối tượng từ standard input.

Toán tử ‘>>’ có 2 toán hạng với toán hạng bên trái là std::cin 1 đối tượng của istream, toán hạng bên phải là đối tượng cần nhập dữ liệu từ standard input

Khi đó hàm toán tử của ‘>>’ có dạng

friend std::istream& operator>> (std::istream& in, object);

Ví du:


#include <iostream>

#include <string>

using namespace std;

class Complex

{

private:

   //phần ảo
   int vir;

   //phần thực
   int real;

public:

   Complex()

   {

      vir = 0;

      real = 0;

   }

   Complex(int vir, int real)
   {

      this->vir = vir;

      this->real = real;
   }

   //Nap chong toan tu <<
   friend ostream& operator<<(ostream& out, Complex complex)

   {

      out << complex.real << " + " << "j" << complex.vir;

      return out;

   }

   friend istream& operator>>(istream& in, Complex complex)

   {

      in >> complex.real;

      in >> complex.vir;

      return in;

   }

};

int main()

{

   Complex cp;

   cout << "Nhap so phuc: " << endl;

   cin >> cp;

   cout << "So phuc vua nhap : " << cp;

   return 0;

}

Kết quả:

Nhap so phuc:
2
3
So phuc vua nhap : 2 + j3

Was this article helpful?

Leave A Comment?