Việc nạp chồng toán tử có thể được thực hiện với hầu hết các toán tử cài sẵn trong C ++. Các toán tử được nạp chồng là các hàm với toán tử từ khóa theo sau là ký hiệu toán tử được xác định. Các toán tử được nạp chồng có kiểu trả về và danh sách tham số giống như bất kỳ hàm nào.
Một chương trình trừ các số phức sử dụng nạp chồng toán tử như sau -
Ví dụ
#include<iostream> using namespace std; class ComplexNum { private: int real, imag; public: ComplexNum(int r = 0, int i =0) { real = r; imag = i; } ComplexNum operator - (ComplexNum const &obj1) { ComplexNum obj2; obj2.real = real - obj1.real; obj2.imag = imag - obj1.imag; return obj2; } void print() { if(imag>=0) cout << real << " + i" << imag <<endl; else cout << real << " + i(" << imag <<")"<<endl; } }; int main() { ComplexNum comp1(15, -2), comp2(5, 10); cout<<"The two comple numbers are:"<<endl; comp1.print(); comp2.print(); cout<<"The result of the subtraction is: "; ComplexNum comp3 = comp1 - comp2; comp3.print(); }
Đầu ra
The two comple numbers are: 15 + i(-2) 5 + i10 The result of the subtraction is: 10 + i(-12)
Trong chương trình trên, lớp ComplexNum được định nghĩa có các biến thực và ảo tương ứng với phần thực và phần ảo của một số phức. Hàm tạo ComplexNum được sử dụng để khởi tạo các giá trị của thực và ảo. Nó cũng chứa các giá trị mặc định là 0. Điều này được hiển thị trong đoạn mã sau -
class ComplexNum { private: int real, imag; public: ComplexNum(int r = 0, int i =0) { real = r; imag = i; } }
Hàm là toán tử được nạp chồng chứa toán tử từ khóa theo sau - vì đó là toán tử đang được nạp chồng. Hàm trừ hai số phức và kết quả được lưu trong đối tượng obj2. Sau đó, giá trị này được trả về đối tượng ComplexNum comp3.
Đoạn mã sau đây chứng minh điều này -
ComplexNum operator - (ComplexNum const &obj1) { ComplexNum obj2; obj2.real = real - obj1.real; obj2.imag = imag - obj1.imag; return obj2; }
Hàm print () in ra phần thực và phần ảo của số phức. Điều này được hiển thị như sau.
void print() { if(imag>=0) cout << real << " + i" << imag <<endl; else cout << real << " + i(" << imag <<")"<<endl; }