Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ trừ số phức bằng nạp chồng toán tử


Nạp chồng toán tử (operator overloading) có thể làm với hầu hết toán tử built-in C++. Toán tử nạp chồng là hàm với từ khóa operator theo sau bởi ký hiệu toán tử. Toán tử nạp chồng có kiểu trả về và danh sách tham số như hàm thường.

Chương trình trừ số phức bằng nạp chồng toán tử:

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 << "Hai số phức:" << endl;
  comp1.print();
  comp2.print();
  cout << "Kết quả phép trừ: ";
  ComplexNum comp3 = comp1 - comp2;
  comp3.print();
}

Kết quả đầu ra

Hai số phức:
15 + i(-2)
5 + i10
Kết quả phép trừ: 10 + i(-12)

Trong chương trình, lớp ComplexNum có biến real và imag cho phần thực và ảo. Constructor ComplexNum khởi tạo giá trị, có mặc định 0:

class ComplexNum {
private:
  int real, imag;
public:
  ComplexNum(int r = 0, int i = 0) {
    real = r;
    imag = i;
  }
}

Hàm nạp chồng toán tử chứa từ khóa operator theo sau -. Hàm trừ hai số phức, kết quả lưu trong obj2, trả về đối tượng ComplexNum comp3:

ComplexNum operator - (ComplexNum const &obj1) {
  ComplexNum obj2;
  obj2.real = real - obj1.real;
  obj2.imag = imag - obj1.imag;
  return obj2;
}

Hàm print() in phần thực và ảo:

void print() {
  if (imag >= 0)
    cout << real << " + i" << imag << endl;
  else
    cout << real << " + i(" << imag << ")" << endl;
}