
HÀM XÂY DỰNG, HÀM HỦY VÀ
VIỆC KHỞI TẠO ĐỐI TƯỢNG
1
Chương 5

Nội dung
•Hàm xây dựng
•Hàm hủy
•Hàm xây dựng sao chép
•Thuộc tính của 1 lớp là đối tượng
2

Hàm xây dựng
•Mục đích: khởi tạo giá trị ban đầu cho đối tượng
– Gán giá trị đầu cho các thuộc tính.
– Cấp vùng nhớ cho con trỏ thành viên.
3
class Diem {
int x, y;
public:
Diem(int a)
{ x = y = a; }
Diem(int h, int t)
{ x = h; y=t; }
….
};
class PhanSo {
int tu, mau;
public:
PhanSo()
{ tu=0; mau=1; }
PhanSo(int x)
{ tu=x; mau=1; }
PhanSo(int t, int m)
{ tu = t; mau=m; }
….
};

•Ví dụ:
4
class SinhVien {
char mssv[8];
char* hoten;
int namsinh;
float diemtb;
public:
SinhVien() {
strcpy(mssv,””);
hoten = new char[50];
namsinh = 1980;
diemtb = 0;
}
SinhVien(char*,char*,int,fl
oat);
…
};
class Stack {
float *ds;
int soluong;
int vitri;
public:
Stack(int max = 10)
{
soluong = max;
vitri = 0;
ds = new
float[soluong];
}
Stack(float* d, int m,
int n);
…
};
Hàm xây dựng
Cấp vùng
nhớ
cho con trỏ

•Nếu không có định nghĩa hàm xây dựng:
– Mặc nhiên sẽ tự động có 1 hàm xây dựng không tham số.
– Chỉ có 1 cách khởi tạo đối tượng theo dạng không tham số.
5
class Diem {
int x, y;
public:
void InDiem();
void NhapDiem();
void GanGiaTri(int,
int);
int GiaTriX();
int GiaTriY();
…
};
// Định nghĩa các hàm
thành viên
...
…
…
a
x
y
1000H
void main() {
Diem a;
Diem *pa = new Diem();
Diem ds1[10];
Diem *ds2 = new
Diem[20];
…
}
Không có giá trị
đầu
nên dễ gây ra
hiệu ứng phụ
Hàm xây dựng