Phân loại phương thức, phương thức inline
Có thể chia phương thức thành các nhóm: 1. Các phương thức thông thường 2. Các phương thức dùng để xây dựng và huỷ bỏ đối tượng gồm: + Hàm tạo không đối, + Hàm tạo có đối + Hàm tạo sao chép + ...
Có thể chia phương thức thành các nhóm:
1. Các phương thức thông thường
2. Các phương thức dùng để xây dựng và huỷ bỏ đối tượng gồm:
+ Hàm tạo không đối,
+ Hàm tạo có đối
+ Hàm tạo sao chép
+ Hàm huỷ
3. Các phương thức toán tử
Mọi phương thức đều dùng con trỏ this như đối thứ nhất (đối ẩn). Ngoài ra trong phương thức có thể đưa vào các đối tường minh được khai báo như đối của hàm.
+ Với các phương thức thông thường, thì đối ẩn biểu thị đối tượng chủ thể trong lời gọi phương thức.
+ Với các hàm tạo, thì đối ẩn biểu thị đối tượng mới được hình thành.
+ Với các hàm huỷ, thì đối ẩn biểu thị đối tượng sắp bị huỷ bỏ.
+ Với các phương thức toán tử, thì đối ẩn biểu thị toán hạng đối tượng thứ nhất.
Có 2 cách để biên dịch phương thức theo kiểu inline:
Cách 1: xây dựng phương thức bên trong định nghĩa lớp.
Cách 2: thêm từ khoá inline vào định nghĩa phương thức (bên ngoài định nghĩa lớp).
Chỉ các phương thức ngắn không chứa các câu lệnh phức tạp (như chu trình, goto, switch, đệ quy) mới có thể trơ thành inline. Nếu có ý định biên dịch theo kiểu inline các phương thức chứa các câu lệnh phức tạp nói trên, thì trình biên dịch sẽ báo lỗi.Trong chương trình dưới đây, tất cả các phương thức của lớp ps (phân số) đều là phương thức inline
//ct4_11.cpp // lop ps // inline #include <conio.h> #include <iostream.h> Class ps { Private: Int t,m ; Public: Ps() { T=0;m=1; } Ps(int t1, int m1); Void nhap(); Void in(); Ps operator*=(ps p2) { T*=p2.t; M*=p2.m; Return *this; } }; Inline ps::ps(int t1, int m1) { T=t1; M=m1; } Inline void ps::nhap() { Cout << " nhap tu va mau: " ; Cin >> t >> m; } Inline void ps::in() { Cout << " ps = " << t << "/" << m ; } Void main() { Ps q,p,s(3,5); Cout << " nhap ps p"; P.nhap(); S.in(); P.in(); Q = p*=s; P.in(); Q.in(); Getch(); }