Ví dụ 1: Đối với các phép toán phân số: cộng, trừ, nhân, chia hai phân số
               PS pstong = Cong(p, q);//Dùng hàm làm tính toán không được tự nhiên và dài dòng
               --> Ở ví dụ 2 dùng chồng toán tử nên cách viết đơn giản hơn:
       PS pstong = p + q;//Cách ghi đơn giản hoa



#include <iostream>
using namespace std;

struct PS
{
      int a, b;
};

void NhapPhanSo(PS *p);
void InPhanSo(PS p);
int USCLN(int x, int y);
PS RutGon(PS p);
PS Cong(PS p1, PS p2);
PS Nhan(PS p1, PS p2);
PS Chia(PS p1, PS p2);

void NhapPhanSo(PS *p)
{
      int t, m;
      printf("\nTu va mau:");
      scanf_s("%d%d", &t, &m);
      p->a = t;
      p->b = m;
}

void InPhanSo(PS p)
{
      printf("\n%d/%d",p.a, p.b);
}
int USCLN(int x, int y){
      x = abs(x);
      y = abs(y);
      //if( x * y == 0) return 1;
      while( x != y)
      {
            if( x > y) {
                  x -= y;
            }
            else {
                  y -= x;
            }
      }
      return x;
}

PS RutGon(PS p)
{
      PS q;
      int x = USCLN(p.a, p.b);
      q.a = p.a/x;
      q.b = p.b/x;
      return q;
}
PS Cong(PS p1, PS p2)
{
      PS q;
      q.a = p1.a * p2.b + p1.b * p2.a;
      q.b = p1.b * p2.b;
      return RutGon(q);
}
PS Nhan(PS p1, PS p2)
{
      PS q;
      q.a = p1.a * p2.a;
      q.b = p1.b * p2.b;
      return RutGon(q);
}
PS Chia(PS p1, PS p2)
{
      PS q;
      q.a = p1.a * p2.b;
      q.b = p1.b * p2.a;
      return RutGon(q);
}

void main()
{
      PS p, q, pstong;
      printf("\nNhap phan so p:");
      NhapPhanSo(&p);
      printf("\nNhap phan so q:");
      NhapPhanSo(&q);
      pstong = Cong(p, q);// Dùng hàm làm tính toán không được tự nhiên và dài dòng
                          // Ta sẽ dùng Operator để cài đặt lại các phép toán
      InPhanSo(pstong);
      getchar();
      getchar();
}



Ví dụ 2: Sử dụng chồng toán tử đối với các phép toán trên phân số:
#include <iostream>
using namespace std;

struct PS
{
      int a, b;
};

void NhapPhanSo(PS *p);
void InPhanSo(PS p);
int USCLN(int x, int y);
PS RutGon(PS p);
PS operator+(PS p1, PS p2);//p1 + p2
PS operator-(PS p1, PS p2);//p1 - p2
PS operator*(PS p1, PS p2);//p1 * p2
PS operator/(PS p1, PS p2);//p1 / p2

void NhapPhanSo(PS *p)
{
      int t, m;
      printf("\nTu va mau:");
      scanf_s("%d%d", &t, &m);
      p->a = t;
      p->b = m;
}

void InPhanSo(PS p)
{
      printf("\n%d/%d",p.a, p.b);
}
int USCLN(int x, int y){
      x = abs(x);
      y = abs(y);
      //if( x * y == 0) return 1;
      while( x != y)
      {
            if( x > y) {
                  x -= y;
            }
            else {
                  y -= x;
            }
      }
      return x;
}

PS RutGon(PS p)
{
      PS q;
      int x = USCLN(p.a, p.b);
      q.a = p.a/x;
      q.b = p.b/x;
      return q;
}
PS operator+(PS p1, PS p2)//p1 + p2
{
      PS q;
      q.a = p1.a * p2.b + p1.b * p2.a;
      q.b = p1.b * p2.b;
      return RutGon(q);
}
PS operator-(PS p1, PS p2)//p1 - p2
{
      PS q;
      q.a = p1.a * p2.b - p1.b * p2.a;
      q.b = p1.b * p2.b;
      return RutGon(q);
}
PS operator*(PS p1, PS p2)//p1 * p2
{
      PS q;
      q.a = p1.a * p2.a;
      q.b = p1.b * p2.b;
      return RutGon(q);
}
PS operator/(PS p1, PS p2)//p1 / p2
{
      PS q;
      q.a = p1.a * p2.b;
      q.b = p1.b * p2.a;
      return RutGon(q);
}

void main()
{
      PS p, q, psTong, psTich;
      printf("\nNhap phan so p:");
      NhapPhanSo(&p);
      printf("\nNhap phan so q:");
      NhapPhanSo(&q);
      psTong = p + q;//Dùng Operator để cài đặt lại các phép toán
      InPhanSo(psTong);
      psTich = p * q;
      InPhanSo(psTich);
      getchar();
      getchar();
}

Xem them vi du o day: http://www.cplusplus.com/doc/tutorial/templates/
Ví dụ 3: nhân hai ma trận
Két luận: