Hướng dẫn operator overloading in c++ - nạp chồng toán tử trong C++

Nạp chồng toán tử trong C++ là các hàm có tên đặc biệt. Tên hàm gồm từ khóa operator và theo sau là ký hiệu của toán tử đang được định nghĩa. trong C++ là các hàm có tên đặc biệt. Tên hàm gồm từ khóa operator và theo sau là ký hiệu của toán tử đang được định nghĩa.

Nạp chồng toán tử được dùng để định nghĩa lại các toán tử có sẵn như ++, – -, +, -, *, /,… cho kiểu dữ liệu [class] do người lập trình tự định nghĩa. Nhằm tạo ra toán tử cùng tên nhưng thực hiện trên các lớp khác nhau chứ không phải trên các kiểu dữ liệu nguyên thủy.

Để dễ hiểu, các bạn xem ví dụ cộng [+] 2 đối tượng phân số bên dưới. Khi cộng [+] sẽ bị lỗi, bởi vì chưa có định nghĩa toán tử cộng [+] cho đối tượng phân số.cộng [+] 2 đối tượng phân số bên dưới. Khi cộng [+] sẽ bị lỗi, bởi vì chưa có định nghĩa toán tử cộng [+] cho đối tượng phân số.

#include 
using namespace std;

class Phanso{
private:
	int tuso;//tử số của phân số
	int mauso;//mẫu số của phân số
public:
	Phanso[]{
		tuso = 0;
		mauso = 1;
	}
	Phanso[int tuso, int mauso]{
		this->tuso = tuso;
		this->mauso = mauso;
	}
	int getTuso[]{
		return tuso;
	}
	int getMauso[]{
		return mauso;
	}
	int setTuso[int tuso]{
		this->tuso = tuso;
	}
	int setMauso[int mauso]{
		this->mauso = mauso;
	}
};
void main[]
{
	Phanso ps1[5, 9];
	Phanso ps2[7, 10];
	Phanso ps3;
	ps3 = ps1 + ps2;//lỗi toán tử + chưa định nghĩa
	system["pause"];
}
Kết quả lỗi
no operator "+" matches these operands	

Lưu ý: Ví dụ có khai báo int x=0, y=1; int tong = x + y; không bị lỗi bởi C++ đã định nghĩa sẵn toán tử cộng [+] cho các biến kiểu int rồi. Ví dụ có khai báo int x=0, y=1; int tong = x + y; không bị lỗi bởi C++ đã định nghĩa sẵn toán tử cộng [+] cho các biến kiểu int rồi.

Cú pháp định nghĩa một toán tử nạp chồng:

Kiểu_trả_về operator  [danh_sách_đối_số]{
//Định nghĩa toán tử
}

Trong đó:– Kiểu_trả_về là kiểu dữ liệu của hàm nạp chồng toán tử.
Kiểu_trả_về là kiểu dữ liệu của hàm nạp chồng toán tử.

– là tên toán tử cần nạp chồng [+, -, *, /,…] là tên toán tử cần nạp chồng [+, -, *, /,…]

– operator operator *

,

#include 
using namespace std;

class Counter{
private:
	int count;
public:
	Counter[]{
		count=0;
	}
	int getCount[]{
		return count;
	}
	Counter operator ++[]{//hàm nạp chồng toán tử
		count = count + 1;
		Counter temp;
		temp.count = count;
		return temp;
	}
};
void main[]
{
	Counter c1, c2;
	cout 

Bài Viết Liên Quan

Chủ Đề