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

Cấu trúc

  • PowerPoint Presentation

  • Nội dung

  • Hàm xây dựng

  • Khởi tạo đối tượng

  • Trình tự tạo đối tượng

  • Hàm hủy

  • Hàm xây dựng sao chép

  • Slide 8

  • Slide 9

  • Ví dụ

  • Slide 11

  • Slide 12

  • Slide 13

  • Đối tượng là dữ liệu thành viên

  • Cách truy xuất

  • Slide 16

  • Slide 17

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