1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng lập trình hướng đối tượng (object oriented programming) chương 6 hàm tạo và hàm hủy (constructor destructor)

33 0 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 33
Dung lượng 1,1 MB

Nội dung

Chương 06 Hàm tạo hàm hủy (constructor & destructor) I Giới thiệu hàm tạo hàm hủy I.1 Giới thiệu hàm tạo hàm hủy I.2 Hàm tạo hàm hủy người lập trình viết II Hàm tạo có đối số II.1 Hàm tạo hai đối số II.2 Hàm tạo mặc định II.3 Hàm tạo đối số III Hàm tạo chép Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 Điểm đặc biệt hàm tạo, hàm hủy Không cần khai báo, định nghĩa (viết) có  Tự động thực hiện, khơng cần lời gọi hàm  Hàm tạo có tên hàm trùng với tên lớp, hàm hủy có tên hàm tên lớp với ký tự ~ đứng trước Ví dụ: SoPhuc(), ~SoPhuc()  Khơng có kiểu trả về, kể kiểu void  Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 Khi phải viết hàm tạo, hàm hủy Bình thường ta khơng phải viết hàm tạo, hàm hủy trình biên dịch tự động thêm vào lớp  Ta phải viết hàm tạo, hàm hủy tình sau:  1) Khi cần khởi tạo giá trị ban đầu cho biến đối tượng phải viết hàm tạo 2) Khi đối tượng có sử dụng trỏ biến động phải viết hàm tạo hàm hủy Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 Chức Hàm tạo có chức tạo đối tượng cấp phát tài nguyên cho đối tượng Hàm hủy có chức hủy đối tượng giải phóng tài nguyên chiếm giữ đối tượng  Trong lớp thường có nhiều hàm tạo với đối số khác có hàm hủy khơng đối số Mỗi hàm tạo cho ta cách tạo đối tượng Mỗi đối tượng tạo hàm tạo  Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 Hàm tạo mặc định Là hàm tạo không đối số  Trình biên dịch thêm vào lớp hàm tạo không đối số  Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 Hàm tạo có đối số Làm để truyền đối số cho hàm tạo khơng có lời gọi hàm?  Truyền đối số cách để danh sách đối số ngoặc đơn sau tên đối tượng tạo đối tượng  Ví dụ: Lớp số phức có hàm tạo đối số Tạo đối tượng số phức p hàm tạo đối số sau: SoPhuc p(2, 5); Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 Hàm tạo đối số  Hàm tạo đối số đặc biệt hàm tạo có đối số khác hai điểm sau: Khi truyền đối số dùng ký pháp khởi tạo dấu = Ví dụ: SoPhuc p=2;  Hàm tạo đối số tự động thực gán giá trị có kiểu đối số cho đối tượng Ví dụ: p = 5; => Hàm tạo đối số gọi hàm chuyển đổi kiểu liệu  Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 Hàm tạo chép Là hàm tạo đối số đối số lại đối tượng lớp với hàm tạo Hàm tạo chép có chức tạo đối tượng đối tượng có  Hàm tạo chép đặc biệt hàm đối số điểm sau:  Tự động thực truyền đối tượng cho hàm theo giá trị  Tự động thực hàm trả đối tượng  Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 Hàm tạo chép Vì điểm đặc biệt mà hàm tạo chép trình biên dịch tự động thêm vào lớp với hàm tạo khơng đối số  Bình thường ta viết hàm tạo chép, ta phải viết đối tượng có sử dụng trỏ biến động  Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 I.1 Giới thiệu hàm tạo hàm hủy    Hàm tạo hàm hủy hai hàm thành viên đặc biệt đối tượng Hàm tạo thực tự động đối tượng tạo, hàm hủy tự động thực đối tượng bị hủy Chúng ta thường viết hàm tạo để khởi tạo đối tượng, viết hàm hủy để giải phóng nhớ cấp phát hàm tạo Dù người lập trình có viết hay khơng viết hàm tạo hàm hủy trình biên dịch tạo mã lệnh để tạo đối tượng, cấp phát nhớ cho thực số khởi tạo đó; tạo mã lệnh để giải phóng nhớ chiếm đối tượng thực nhiều hoạt động dọn dẹp khác đối tượng bị hủy Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 10 Chương Hàm tạo hàm hủy I Giới thiệu hàm tạo hàm hủy I.1 Giới thiệu hàm tạo hàm hủy I.2 Hàm tạo hàm hủy người lập trình viết II Hàm tạo có đối số II.1 Hàm tạo hai đối số II.2 Hàm tạo mặc định II.3 Hàm tạo đối số III Hàm tạo chép Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 19 II.3 Hàm tạo đối số   Hàm tạo đối số có vai trị quan trọng lập trình hướng đối tượng Nó dùng để chuyển đổi đối tượng lớp sang lớp khác Việc chuyển đổi thường dùng với lớp biểu diễn kiểu liệu Chính lý mà hàm tạo gọi hàm chuyển đổi Để thấy cách khai báo sử dụng hàm tạo đối số ta xét ví dụ sau: Giả sử lớp TypeA có hàm tạo đối số kiểu int khai báo sau: (Trang sau) Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 20 II.3 Hàm tạo đối số (tiếp) class TypeA { public: TypeA(int i) //Ham tao mot doi so { //Thuc hien chuyen doi gia tri int toi gia tri TypeA } }; void main() { int b=50; //Khai bao mot bien int co gia tri 50 TypeA ta1(b);//Khoi tao doi tuong ta1 bang gia tri int //TypeA ta1=b; //Tuong duong voi ta1(b) } Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 21 II.3 Hàm tạo đối số (tiếp) Dấu = cách thứ hai khơng phải tốn tử gán, có tác dụng gọi hàm tạo đối số  Bài tập nhà: Hãy xây dựng lớp xâu ký tự có sử dụng hàm tạo đối số để chuyển đổi xâu ký tự thông thường thành đối tượng xâu ký tự  Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 22 Chương Hàm tạo hàm hủy I Giới thiệu hàm tạo hàm hủy I.1 Giới thiệu hàm tạo hàm hủy I.2 Hàm tạo hàm hủy người lập trình viết II Hàm tạo có đối số II.1 Hàm tạo hai đối số II.2 Hàm tạo mặc định II.3 Hàm tạo đối số III Hàm tạo chép Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 23 III Hàm tạo chép Hàm tạo chép (copy constructor) cho phép ta tạo đối tượng đối tượng có  Hàm tạo chép hàm tạo có đối số, đối số đối tượng lớp chứa hàm tạo  Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 24 III Hàm tạo chép (tiếp)  Khi khai báo biến kiểu ta khởi tạo giá trị cho Ví dụ: int a=45; int b=a; //int b(a); //tao bien a va khoi tao bang 45 //tao bien b la ban cua a //tuong duong voi lenh int b=a; Dấu = khai báo lệnh gán, có nghĩa khởi tạo  Với đối tượng ta tạo khởi tạo cho giống với biến kiểu Ví dụ: giả sử có lớp Alpha Alpha a1; //tao mot doi tuong Alpha a1.getdata();//dua du lieu vao doi tuong a1 Alpha a2=a1;//tao doi tuong a2 la ban cua a1, o day ham //tao chep duoc goi de chep du lieu tu a1 sang a2 Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 25 III Hàm tạo chép (tiếp)   Nếu khơng định nghĩa hàm tạo chép trình biên dịch tạo hàm tạo chép mặc định Hàm tạo chép mặc định chép y nguyên tất liệu từ đối tượng sang đối tượng khác Bởi vậy, ta cần chép liệu từ đối tượng sang đối tượng khác khơng cần định nghĩa hàm tạo chép Còn ta muốn làm việc khác ta phải định nghĩa riêng hàm tạo chép Hàm tạo chép phải khai báo để truyền đối số theo tham chiếu đối số nên để const Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 26 III Hàm tạo chép (tiếp)  Hàm tạo chép gọi trường hợp sau:     Khi khởi tạo đối tượng Khi truyền đối tượng cho hàm theo giá trị Khi hàm trả đối tượng Ví dụ sử dụng hàm tạo, hàm hủy, biến biến tự động: Viết chương trình tạo lớp cho tạo đối tượng khởi tạo đối tượng xâu ký tự; hàm tạo đối tượng cần hiển thị liệu đối tượng, đối tượng thứ tổng số đối tượng tồn bao nhiêu; hàm huỷ cần hiển thị huỷ đối tượng thứ sau huỷ cịn đối tượng tồn tại; trước hàm main kết thúc cần hiển thị tổng số đối tượng tạo thời gian chương trình chạy Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 27 Bài tập Ứng dụng ngăn xếp lưu trữ để chuyển số nguyên dương hệ 10 sang hệ  Đọc dãy số nguyên từ tệp văn “songuyen.txt” đưa vào danh sách liên kết đơn Các số nguyên DSLKD có thứ tự tệp Duyệt DSLKD để đưa dãy số nguyên hình  Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 28 IV-Mẫu lớp (Class Template) Mẫu lớp hay gọi lớp tổng quát (Generic Class) lớp sử dụng kiểu liệu giả định, tạo đối tượng xác định kiểu liệu cụ thể  Mẫu lớp cho phép tạo đối tượng chứa kiểu liệu khác  Kiểu liệu giả định mẫu lớp giống tham số khai báo định nghĩa hàm  Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 29 IV-Mẫu lớp (Class Template) Cú pháp khai báo mẫu lớp: template class TenLop { private:  public: }; Trong T tên kiểu giả định tự đặt Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 30 IV-Mẫu lớp (Class Template) Cú pháp định nghĩa hàm thành viên khai báo mẫu lớp: template Kiểu TenLop::TenHam(DS Tham số) {  } Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 31 IV-Mẫu lớp (Class Template) Cú pháp tạo đối tượng từ mẫu lớp: TenLop TenDT; Ví dụ: SList List;  Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 32 Bài tập Bài 1: Ứng dụng ngăn xếp lưu trữ chuyển số nguyên dương hệ 10 sang hệ 16 Yêu cầu sử dụng mẫu lớp cài đặt  Bài 2: Ứng dụng ngăn xếp lưu trữ phân tán chuyển số nguyên dương hệ 10 sang hệ  Ngô Công Thắng - Bài giảng LTHĐT - Chương 06 33

Ngày đăng: 30/06/2023, 08:58

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

TÀI LIỆU LIÊN QUAN