1. Trang chủ
  2. » Công Nghệ Thông Tin

Hàm xây dựng và hàm hủy OOP C

17 392 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 787,5 KB

Nội dung

TS. Trần Công Án - 2014 Hàm xây dựng, hàm hủy Hàm xây dựng, hàm hủy CT114 – Lập trình Hướng đối tượng C++ CT114 Nội dung  Hàm xây dựng (Constructor)  Hàm hủy (Destructor)  Hàm xây dựng sao chép (Copy constructor)  Đối tượng là dữ liệu thành viên của một lớp. TS. Trần Công Án Khoa CNTT&TT CT114 Hàm xây dựng  Mục đích: dùng để khởi tạo cho đối tượng.  Gán giá trị cho các dữ liệu thành viên.  Cấp phát vùng nhớ cho các con trỏ.  Hàm xây dựng TS. Trần Công Án Khoa CNTT&TT class PhanSo { int tu, mau; public: PhanSo() { tu=0; mau=1; } PhanSo(int t, int m) { tu=t; mau=m; } }; class Stack { float *ds; int soluong, vitri; public: Stack(int n=10) { ds = new float[n]; soluong = n; vitri = 0; } }; CT114 Khởi tạo đối tượng  Hàm xây dựng và việc khởi tạo đối tượng:  Lớp có bao nhiêu hàm xây dựng ⇒ có bấy nhiêu cách tạo đối tượng, trừ trường hợp dùng đối số mặc nhiên.  Nếu lớp không có hàm xây dựng nào, trình biên dịch sẽ tự động thêm vào 1 hàm xây dựng không đối số được gọi là hàm xây dựng mặc nhiên.  Ví dụ:  Lớp Phanso trong ví dụ trước có 2 hàm xây dựng ⇒ có 2 cách tạo 1 đối tượng Phanso: Phanso p1; Phanso p2(1, 2);  Lớp Stack có 1 hàm XD, nhưng có 2 cách tạo ĐT Stack: Stack s; Stack s(20);  Hàm xây dựng TS. Trần Công Án Khoa CNTT&TT CT114 Trình tự tạo đối tượng  Vùng nhớ dành cho đối tượng được cấp phát trước.  Hàm xây dựng được gọi để khởi tạo giá trị cho các dữ liệu thành viên của đối tượng mới.  Hàm xây dựng TS. Trần Công Án Khoa CNTT&TT p1 tu:… mau:… Phanso p1(1,2); p1 tu:1 mau:2 Stack s(5); s ds:… soluong:… vitri:… 2 × 2 bytes s ds:1000 soluong:5 vitri:0 3 × 2 bytes 1000 5 × 2 bytes CT114 Hàm hủy  Mục đích: Thu hồi các nguồn tài nguyên đang sử dụng bởi đối tượng trước khi đối tượng bị hủy.  Thu hồi các vùng nhớ đã cấp phát cho các con trỏ;  Đóng các nguồn tài nguyên đang mở (tập tin,…).  Hàm hủy TS. Trần Công Án Khoa CNTT&TT class PhanSo { int tu, mau; public: PhanSo() { tu=0; mau=1; } PhanSo(int t, int m) { tu=t; mau=m; } ~PhanSo() { } }; class Stack { float *ds; int soluong, vitri; public: Stack(int n=10) { ds = new float[n]; soluong = n; vitri = 0; } ~Stack() { delete[] ds; } }; CT114 Hàm xây dựng sao chép  Mục đích: dùng để tạo 1 đối tượng từ 1 đối tượng đã tồn tại. Được gọi trong các trường hợp:  Đối số của hàm là một đối tượng.  Trị trả về của hàm là 1 đối tượng.  Khởi tạo đối tượng từ một đối tượng đã có sẵn.  Hàm xây dựng sao chép TS. Trần Công Án Khoa CNTT&TT class Diem { int x,y; public: Diem(int h=0, int t=0) { x = h; y = t; } Diem doixung() { return Diem(-x,-y); } char* trung(Diem d) { if(x==d.x && y==d.y) return “Trung”; return “Ko trung”; } }; Diem a(1, 2), b, c(a); b = a.doixung(); cout << a.trung(b); CT114 Hàm xây dựng sao chép  Trong cả 3 trường hợp trên, có 1 đối tượng mới được tạo ra từ một đối tượng có sẵn:  Diem c(a): tạo đối tượng c “giống” đối tượng a.  b = a.doixung(): một đối tượng “tạm” “giống” với đối tượng Diem(-x,-y) trong hàm doixung() được tạo ra bên trong hàm main() để gán cho b.  a.trung(b): đối tượng d, là tham số hình thức của hàm trung() được tạo ra “giống” với đối tượng b, là tham số thực tế trong hàm main().  Khi đó, hàm xây dựng sao chép của các đối tượng “mới” sẽ được gọi để sao chép dữ liệu.  Hàm xây dựng sao chép TS. Trần Công Án Khoa CNTT&TT CT114 Hàm xây dựng sao chép  Nếu lớp không có hàm xây dựng sao chép:  Trình biên dịch sẽ tự động thêm vào cho lớp một hàm xây dựng sao chép mặc nhiên.  Hàm này sẽ thực hiện gán tuần tự từng thuộc tính của đối tượng mới bằng (“=“) với từng thuộc tính tương ứng của đối tượng có sẵn.  Có thể bị sai nếu lớp có dữ liệu thành viên là con trỏ.  Hàm xây dựng sao chép TS. Trần Công Án Khoa CNTT&TT Chú ý: Phân biệt giữa trường hợp thực hiện phép gán (“=“) với trường hợp gọi hàm xây dựng sao chép. Diem a(1,2), b, c(a); //gọi hàm XDSC cho c b = a; //thực hiện phép gán cho b CT114 Ví dụ  Hàm xây dựng sao chép TS. Trần Công Án Khoa CNTT&TT Stack a(5); //gán dữ liệu cho Stack a Stack b(a); //tạo b giống a a ds:1000 soluong:5 vitri:3 1 3 2 1000 5 × 2 bytes b ds: soluong: vitri: Diem a(1,2); Diem b(a); // tạo b giống a a x:1 y:2 b x: y: = = = = = 1 2 1000 5 3 [...]... Trần C ng Án void Duongtron::nhap() { cout bkinh; } tam.x = xxx;  Lỗi tam.y = xxx;  Lỗi Khoa CNTT&TT  Đối tượng là dữ liệu thành viên c a một lớp CT114 Hàm xây dựng  Hàm xây dựng c a ĐT là dữ liệu thành viên:  Trong định nghĩa hàm xây dựng c a lớp sử dụng đối tượng là dữ liệu thành viên, ta gọi hàm xây dựng cho c c đối tượng này bằng c pháp:... Trần C ng Án Khoa CNTT&TT  Hàm xây dựng sao chép CT114 Ví dụ class Diem { int x, y; Đây c ng chính là nội dung hàm XDSC m c nhiên public: Diem(int x=0, int y=0) { this->x = x; this->y = y; cout . Trần C ng Án - 2014 Hàm xây dựng, hàm hủy Hàm xây dựng, hàm hủy CT114 – Lập trình Hướng đối tượng C+ + CT114 Nội dung  Hàm xây dựng (Constructor)  Hàm hủy (Destructor)  Hàm xây dựng sao chép (Copy. xây dựng sao chép TS. Trần C ng Án Khoa CNTT&TT CT114 Hàm xây dựng sao chép  Nếu lớp không c hàm xây dựng sao chép:  Trình biên dịch sẽ tự động thêm vào cho lớp một hàm xây dựng sao chép. 2 c ch tạo ĐT Stack: Stack s; Stack s(20);  Hàm xây dựng TS. Trần C ng Án Khoa CNTT&TT CT114 Trình tự tạo đối tượng  Vùng nhớ dành cho đối tượng đư c cấp phát trư c.  Hàm xây dựng được

Ngày đăng: 21/10/2014, 21:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w