Định nghĩa chồng toán tử trong C++

Thảo luận trong 'Visual C++' bắt đầu bởi tranvcuong94, 30/5/16.

  1. tranvcuong94

    tranvcuong94 Moderator Moderator

    Tham gia ngày:
    9/4/16
    Bài viết:
    228
    Đã được thích:
    1
    Điểm thành tích:
    18
    Giới tính:
    Nam
    Nghề nghiệp:
    N/A
    Nơi ở:
    N/A
    Web:
    N/A

    Trong cả ngôn ngữ C và C++ có khá nhiếu các phép toán dùng để thực hiện các thao
    tác trên các kiểu dữ liệu chuẩn như các phép toán số học +, -, *, / …
    Vậy việc thực hiện các phép toán này trên các kiểu dữ liệu không chuẩn (các kiểu dữ
    liệu người dùng định nghĩa) như kiểu mảng hay cấu trúc là nhu cầu cần thiết bắt buộc. ví dụ
    như muốn tính toán các phép toán số học trên số phức, phân số, đa thức, véc tơ, ma trận…
    do vậ để đáp ứng được yêu cầu này ta cần phải có cách để định nghĩa chồng các toán tử.

    Cách định nghĩa chồng toán tử

    - Tên hàm toán tử: gồm từ khóa operator và tên phép toán
    operator+ (định nghĩa chồng phép +)
    operator- (định nghĩa chồng phép -)

    - Các đối của hàm toán tử:

     Với phép toán có hai toán hạng: hàm toán tử cần hai đối số (đối 1 ứng với toán
    hạng 1, đối 2 ứng với toán hạng 2) thứ tự là quan trọng.
     Với phép toán có một toán hạng: hàm toán tử cần một đối.
    - Thân của hàm toán tử: Viết như thân của hàm thông thường.
    - Cách dùng: có hai cách dùng
    Cách 1: dùng như một hàm thông thường bằng cách viết lời gọi hàm.
    Cách 2: dùng như phép toán trong C++

    Các ví dụ về định nghĩa về chồng toán tử

    Ví dụ 1: Trong ví dụ này ngoài việc sử dụng các hàm toán tử để thực hiện 4 phép tính
    trên phân số, còn định nghĩa chồng các phép toán << và >> để xuất và nhập phân số (xem
    chi tiết trong chương 7).


    Hàm operator<< có 2 đối kiểu ostream& và PS (Phân số). Hàm trả về giá trị kiểu
    ostream&. Hàm được khai báo như sau:
    ostream& operator<< (ostream& os, PS p);
    Tượng tự hàm operator>> được khai báo như sau:
    istream& operator>> (istream& is,PS &p);
    Dưới đây sẽ chỉ ra cách xây dựng và sử dụng các hàm toán tử. Chúng ta cũng sẽ thấy
    việc sử dụng các hàm toán tử rất tự nhiên, ngắn gọn và tiện lợi.

    CODE:
    Select All
    #include <conio.h>
    #include <iostream.h>
    #include <math.h>
    typedef struct
    {
    int a,b;
    PS;
    ostreamoperator<< (ostreamosPS p);
    istreamoperator>> (istreamis,PS &p);
    int uscln(int xint y);
    PS rutgon(PS p);
    PS operator+(PS p1PS p2);
    PS operator-(PS p1PS p2);
    PS operator*(PS p1PS p2);
    PS operator/(PS p1PS p2);
    ostreamoperator<< (ostreamosPS p)
    {
    os << p.<< '/' << p.;
    return 
    os;
    }
    istreamoperator>> (istreamis,PS &p)
    {
    cout << "Nhap tu va mau: " ;
    is >> p.>> p.;
    return 
    is;
    }
    int uscln(int xint y)
    {
    x=abs(x); y=abs(y);
    if (
    x*y==0) return 1;
    while (
    x!=y)
    if (
    x>yx-=y;
    else 
    y-=x;
    return 
    x;
    }
    PS rutgon(PS p)
    {
    PS q;
    int x;
    x=uscln(p.a,p.b);
    q.p.;
    q.p.;
    return 
    q;
    }
    PS operator+(PS p1PS p2)
    {
    PS q;
    q.p1.a*p2.p2.a*p1.b;
    q.p1.p2.;
    return 
    rutgon(q);
    }
    PS operator-(PS p1PS p2)
    {
    PS q;
    q.p1.a*p2.p2.a*p1.b;
    q.p1.p2.;
    return 
    rutgon(q);
    }
    PS operator*(PS p1PS p2)
    {
    PS q;
    q.p1.p2.;
    q.p1.p2.;
    return 
    rutgon(q);
    }
    PS operator/(PS p1PS p2)
    {
    PS q;
    q.p1.p2.;
    q.p1.p2.;
    return 
    rutgon(q);
    }
    void main()
    {
    PS pqzu;
    PS s;
    cout <<"\nNhap cac PS p, q, z, u, v:\n " ;
    cin >> >> >> >> >> ;
    = (q*z) / (v) ;
    cout << "\n Phan so s = " << s;
    getch();
    }
     

    Bình Luận Bằng Facebook

    data-href="https://cnttqn.com/threads/dinh-nghia-chong-toan-tu-trong-c.1905.html"