Tải bản đầy đủ (.docx) (3 trang)

Phân loại phương thức, phương thức inline

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (49.99 KB, 3 trang )

Phân loại phương thức, phương thức inline
7.1. Phân loại các phương thức
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ử
7.2. Con trỏ this
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.
7.3. Phương thức inline.
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ỳ ý là 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:
194
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 << "\nNhap tu va mau: " ;
cin >> t >> m;

}
inline void PS::in()
{
cout << "\nPS = " << t << "/" << m ;
}
void main()
{
PS q,p,s(3,5);
cout << "\n Nhap PS p";
p.nhap();
s.in();
p.in();
q = p*=s;
p.in();
q.in();
getch();
}

×