Phương thức tĩnh

Một phần của tài liệu Hàm tạo, hàm hủy và các vấn đề liên quan (Trang 39 - 40)

+ Có 2 cách viết phương thức tĩnh:

Cách 1: Dùng từ khoá static ñặt trước ñịnh nghĩa phương thức viết bên trong ñịnh nghĩa lớp (như phương thưc in() ví dụ cuối của mục 9.1).

Cách 2: Nếu phương thức xây dựng bên ngoài ñịnh nghĩa lớp, thì dùng từ khoá static ñặt trước khai báo phương thức bên trong ñịnh nghĩa lớp. Chú ý không cho phép dùng từ khoá static ñặt trước ñịnh nghĩa phương thức viết bên ngoài ñịnh nghĩa lớp.

+ Phương thức tĩnh là chung cho cả lớp, nó không lệ thuộc vào một ñối tượng cụ thể, nó tồn tại ngay khi lớp chưa có ñối tượng nào.

+ Lời gọi phương thức tĩnh có thể xuất phát từ một ñối tượng nào ñó (như vẫn dùng khi gọi các phương thức khác) hoặc có thể dùng tên lớp

Ví dụ xét lớp HDBH trong mục 8.1 và xét các câu lênh: HDBH u, v;

Khi ñó ñể gọi phương thức tĩnh in() có thể dùng một trong các lệnh sau: u.in();

v.in(); HDBH::in();

+ Vì phương thức tĩnh là ñộc lập với các ñối tượng, nên không thể dùng phương thức tĩnh ñể xử lý dữ liệu của các ñối tượng chủ thể trong lời gọi phương thức tĩnh. Nói cách khác không cho phép truy nhập tới các thuộc tính (trừ thuộc tính tĩnh) trong thân phương thức tĩnh. ðiều ñó cũng ñồng nghĩa với việc không cho phép dùng con trỏ this trong phương thức tĩnh.

Ví dụ nếu lập phương thức tĩnh in() ñể in các thuộc tính của lớp HDBH như sau: class HDBH { int shd ; char *tenhang ; double tienban ; static int tshd ;

static double tstienban ; public:

static void in() { cout <<"\n" << tshd; cout <<"\n" << tstienban; cout <<"\n" << tenhang; cout <<"\n" << tienban; } } ;

thì sẽ bị lỗi, vì trong thân phương thức tĩnh không cho phép truy nhập ñến các thuộc tính tenhang và tienban.

Một phần của tài liệu Hàm tạo, hàm hủy và các vấn đề liên quan (Trang 39 - 40)