Để biểu thị thuộc tính của phần tử mảng đối tợng, ta viết nh sau: Tên_mảng[chỉ số] . Tên_thuộc_tính
Để thực hiện phơng thức đối với phần tử mảng ta viết nh sau: Tên_mảng[chỉ số] . Tên_phơng_thức(danh sách tham số) ;
Ví dụ để vẽ đoạn thẳng nối điểm d[1] với d[2] theo mầu đỏ, ta có thể dùng phơng thức ve_doan_thang nh sau:
d[1].ve_doan_thang(d[2], 4);// Thực hiện phơng thức đối với d[1]
10.4. Ví dụ
Chơng trình dới đây đa vào lớp TS (thí sinh) và xét bài toán: Nhập một danh sách thí sinh, sắp xếp danh sách theo thứ tự giảm của tổng điểm. Chơng trình minh hoạ:
+ Cách dùng mảng đối tợng.
+ Vai trò con trỏ this (trong phơng thức hv(hoán vị)) . + Các hàm tạo, hàm huỷ.
+ Vai trò của toán tử gán (nếu sử dụng phép gán mặc định chơng trình sẽ cho kết quả sai).
//CT4_15.CPP // mang doi tuong // Lop TS (thi sinh)
// Chu y vai tro cua toan tu gan #include <conio.h> #include <iostream.h> #include <string.h> class TS { private: char *ht; double td; public: TS() { ht = new char[20]; td = 0; } ~TS() { delete ht; }
const TS &operator=(const TS &ts2) {
this->td = ts2.td; strcpy(this->ht,ts2.ht); return ts2;
}
void nhap(int i); void in(); double gettd() { return td; } void hv(TS &ts2) { TS tg; tg = *this ; *this = ts2 ; ts2 = tg; } } ; 216 217
void TS::in() {
cout << "\nHo ten: " << ht << " Tong diem: " << td; }
void TS::nhap(int i) {
cout << "\nNhap thi sinh " << i ; cout << "\nHo ten: " ; cin >> ht; cout << "Tong diem: " ; cin >> td; } void main() { TS ts[100]; int n, i, j; clrscr();
cout << "\n So thi sinh: " ; cin >> n;
for (i=1; i<= n; ++i) ts[i].nhap(i);
cout <<"\n Danh sach nhap vao:"; for (i=1; i<= n; ++i)
ts[i].in();
for (i=1; i<n ; ++i) for (j=i+1 ; j<=n; ++j)
if (ts[i].gettd() < ts[j].gettd()) ts[i].hv(ts[j]);
cout <<"\n\n Danh sach sau khi sap xep:"; for (i=1; i<= n; ++i)
ts[i].in(); getch(); }
Đ 11. cấp phát bộ nhớ cho đối tợng