Đối tợng hằng của lớp

Một phần của tài liệu Lập trình hướng đối tượng (Trang 87 - 89)

- Cũng nh các biến nói chung, biến là đối tợng cũng có thể khai báo là hằng và gọi là đối tợng hằng.

- Thông thờng thì 2 phơng thức đặc biệt trong lớp có thể sử dụng các đối tợng hằng, đó là constructor và destructor. Bởi lẽ các đối tợng hằng không đợc phép thay đổi mà chỉ có thể tạo ra bởi constructor hoặc huỷ bỏ bởi destructor.

- Các toán tử sao chép đối tợng dạng operator = (const class_name&) cũng sử dụng đối tợng hằng truyền vào nó.

Ta cần liên hệ tới sự phân biệt 2 dạng khai báo: const int i=5; và

const int& j =5;

Sự giống nhau trong 2 dạng khai báo trên là i và j đều là các hằng và đợc kiểm tra kiểu (là int) lúc dịch chơng trình. Sự khác nhau trong 2 dạng khai báo trên là: i không đợc phân phối bộ nhớ còn j thì đợc phân phối bộ nhớ nh một biến kiểu tham chiếu bình thờng, chỉ khác một điều giá trị của j không đợc thay đổi trong suốt quá trình chạy chơng trình. Trong constructor - sao chép và toán tử sao chép, đối tợng khai báo hằng phải để ở dạng tham chiếu vì liên quan đến việc tạo lập đối tợng khi chạy chơng trình, nghĩa là phải phân phối bộ nhớ.

Ví dụ 2 #include <iostream.h> #include <conio.h> #include <stdio.h> #include <string.h> class ABC { private: char *name; public: ABC(){}

ABC(char *s); // constructor khoi tao (1) ABC(const ABC&); // constructor sao chep (2) ~ABC(){}

void put_name(); };

void ABC::put_name()

void ABC::ABC(char *s) { int k=strlen(s);

name=new char[k]; strcpy(name,s);}

void ABC::ABC(const ABC &b) { int k=strlen(b.name);

name=new char[k]; strcpy(name,b.name); }

int main() { clrscr();

ABC const a("Nguyen Thanh Thao"); // su dung (1) ABC b(a); // su dung (2) b.put_name();

ABC c("Le Hai Ha"); // su dung (1) b=c; // su dung (2) khong tuong minh b.put_name();

getche(); return 0;} Nhận xét

Nên khai báo constructor khởi tạo với tham số const vì đối s lúc này không nhập từ bàn phím.

void ABC::ABC(const char *s)

Một phần của tài liệu Lập trình hướng đối tượng (Trang 87 - 89)

Tải bản đầy đủ (DOC)

(174 trang)
w