+ 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 thc 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 cha có đối tợng nào (xem ví dụ trong mục 9.1).
+ 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)
Có thể dùng tên lớp
Ví dụ xét lớp HDBH trong mục 9.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 { private: 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; } } ; 210 211
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.