HÀM THÀNH VIÊNHÀM THÀNH VIÊN
Chương 4
Ni dungNi dung
Tái ñnh nghĩa, ði s mc nhiên
Hàm inline
Truyn ñi tưng như ñi s ca hàm.
Tr tr v ca hàm là ñi tưng
Tr tr v ca hàm là ñi tưng
Con tr *this
Hàm thành viên hng
TáiTái ñnhñnh nghĩanghĩa hàmhàm thànhthành viênviên
Trong 1 lp, có th ñnh nghĩa các hàm thành viên trùng tên,
nhưng các hàm này phi khác nhau v tham s.
Tính ña hình ca lp trình hưng ñi tưng
Dùng ñi s mc nhiênDùng ñi s mc nhiên
Có th dùng ñi s mc nhiên cho hàm thành viên.
Tt c ñi s mc nhiên ñu phi nm cui hàm.
Hàm inlineHàm inline
Có 2 cách khai báo hàm inline :
Thêm t khóa inline vào trưc hàm thành viên.
ðnh nghĩa hàm ngay bên trong khai báo lp.
TruynTruynñiñi tưngtưng nhưnhư ñiñi sscaca
hàmhàm
Truyn qua giá tr
Tham sca hàm thành viên th kiu bt k.
Mtñi tưng th ñưc truyn theo tham s.
Truyn qua đa ch
Tit kim ô nhcho chương trình (hơn truyn qua giá tr).
Có thlàm thay đi giá trca đi tưng truyn vào.
TruynTruynñiñi tưngtưng nhưnhư ñiñi sscaca
hàmhàm
Truyn qua tham chiu
Tương t như truyn qua ña ch.
ðnh nghĩa hàm s ñơn gin hơn (như truyn qua giá tr)
Cũng có th làm thay ñi giá tr ca ñi tưng truyn vào.
TruynTruynñiñi tưngtưng nhưnhư ñiñi sscaca
hàmhàm
Tr tr v ca hàm là ñi tưngTr tr v ca hàm là ñi tưng
Tr tr v truyn qua giá tr
Tr tr v ca hàm thành viên có th có kiu bt k.
Mt hàm có th có tr tr v là mt ñi tưng.
Tr tr v ca hàm là ñi tưngTr tr v ca hàm là ñi tưng
Tr tr v truyn qua ña ch
Tránh lãng phí b nh và thi gian gi hàm.
S d ng phi c!n thn vì có th gây ra hiu "ng ph .

Tr tr v ca hàm là ñi tưngTr tr v ca hàm là ñi tưng
Tr tr v truyn qua tham chiu
Tương t như truyn qua ña ch
ða s dùng ñ tr v mt ñi tưng toàn c c hay ni dung
mt con tr ñã ñưc cp vùng nh trong hàm.

Con tr *thisCon tr *this
Lưu ña ch ca chính ñi tưng ñang xét.
Mun ly giá tr ca chính ñi tưng: dùng *this.
Thuc tính truy cp là private.
class ViDu2 {
int
a;
class Diem {
int
x, y;
int
a;
public:
ViDu2(int x) { a= x; }
void InDiaChi()
{
cout<<“Dia chi doi
tuong : “<<this<<endl;
cout<< “Dia chi du lieu
a : “<<&a<<endl;
}
};
int
x, y;
public:
Diem()
{ x=y=0; }
Diem(int x, int y)
{
this->x = x;
this->y = y;
}
};
Hàm thành viên hngHàm thành viên hng
Hng d liu: không thay ñi giá tr trong khi thc thi.
Hng ñi tưng: không thay ñi giá tr các thành ph#n d$ liu
trong ñi tưng.
Hàm thành viên hng:
Có th thao tác trên hng ñi tưng.
Không làm thay ñi giá tr d liuca ñi tưng.
class Diem {
int x,y;
public:
Diem();
void Hien() const;
void Doi(int, int);
};
… … …
void main() {
Diem a;
const Diem c;
a.Hien();
a.Doi(5,6);
c.Hien();
c.Doi(10,20);
}
Sai
Doi(int,int)
không hàm
hng