Hàm thành viên lớp trong C++

Một hàm thành viên của một lớp là một hàm mà có định nghĩa hoặc prototype của nó bên trong định nghĩa lớp giống như bất kỳ biến nào khác. Nó hoạt động trên bất kỳ đối tượng nào của lớp mà nó là một thành viên, và có sự truy cập tới tất cả thành viên của một lớp cho đối tượng đó.

Chúng ta truy cập các thành viên của lớp bởi sử dụng một hàm thành viên thay vì trực tiếp truy cập chúng:

class Box
{
   public:
      double chieudai;   // chieu dai cua hop
      double chieurong;  // chieu rong cua hop
      double chieucao;   // chieu cao cua hop
      double thetich(void);// tra ve the tich cua hop
};

Các hàm thành viên có thể được định nghĩa bên trong định nghĩa lớp hoặc sử dụng toán tử phân giải phạm vi ::. Định nghĩa một hàm thành viên bên trong định nghĩa lớp sẽ khai báo hàm inline, ngay cả khi bạn không sử dụng inline specifier. Vì thế, bạn có thể định nghĩa hàm Volume() như sau:

class Box
{
   public:
      double chieudai;   // chieu dai cua hop
      double chieurong;  // chieu rong cua hop
      double chieucao;   // chieu cao cua hop
   
      double thetich(void)
      {
         return chieudai * chieurong * chieucao;
      }
};

Nếu bạn thích, bạn có thể định nghĩa giống hàm đó ở bên ngoài lớp bởi sử dụng toán tử phân giải phạm vi :: như sau:

double Box::thetich(void)
{
    return chieudai * chieurong * chieucao;
}

Tại đây, chỉ có một điểm quan trọng là bạn sẽ phải sử dụng tên lớp ngay trước toán tử ::. Một hàm thành viên sẽ được gọi bởi sử dụng một toán tử dot (.) trên một đối tượng, nơi mà nó sẽ thao tác dữ liệu chỉ liên quan tới đối tượng đó, như sau:

Box hopQua;          // tao mot doi tuong

hopQua.thetich();  // goi ham thanh vien cho doi tuong nay

Sau đây, chúng ta dùng khái niệm trên để thiết lập và lấy giá trị của các thành viên khác nhau trong một lớp:

#include <iostream>

using namespace std;

class Box
{
   public:
      double chieudai;   // chieu dai cua hop
      double chieurong;  // chieu rong cua hop
      double chieucao;   // chieu cao cua hop

      // Khai bao ham thanh vien
      double thetich(void);
      void layDoDai( double dai );
      void layDoRong( double rong );
      void layChieuCao( double cao );
};

// phan dinh nghia cac ham thanh vien
double Box::thetich(void)
{
    return chieudai * chieurong * chieucao;
}

void Box::layDoDai( double dai )
{
    chieudai = dai;
}

void Box::layDoRong( double rong )
{
    chieurong = rong;
}

void Box::layChieuCao( double cao )
{
    chieucao = cao;
}

// ham main cua chuong trinh
int main( )
{
   Box Box1;          // Khai bao Box1 la cua kieu Box
   Box Box2;          // Khai bao Box2 la cua kieu Box
   double thetich = 0.0;     // Luu giu the tich cua Box vao bien thetich
 
   // thong tin chi tiet ve box1
   Box1.layDoDai(2.3); 
   Box1.layDoRong(5.6); 
   Box1.layChieuCao(4.5);

   // thong tin chi tiet ve box2
   Box2.layDoDai(7.4); 
   Box2.layDoRong(4.2); 
   Box2.layChieuCao(3.8);

   // the tich cua box1
   thetich = Box1.thetich();
   cout << "The tich cua box1 la: " << thetich <<endl;

   // the tich cua box2
   thetich = Box2.thetich();
   cout << "The tich cua box2 la: " << thetich <<endl;
   return 0;
}

Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau: