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

BÀI GIẢNG Hàm kiến tạo và các công cụ khác

46 60 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 46
Dung lượng 1,06 MB

Nội dung

Bài 7: Hàm kiến tạo công cụ khác Giảng viên: Hồng Thị Điệp Khoa Cơng nghệ Thơng tin – ĐH Công Nghệ Chapter Constructors and Other Tools Copyright © 2010 Pearson Addison-Wesley All rights reserved Mục tiêu học • Hàm kiến tạo – Định nghĩa – Cách gọi • Một số cơng cụ – Từ khóa const cho tham số – Hàm inline – Thành viên liệu static • vector – Giới thiệu lớp vector DTH INT2202 Hàm kiến tạo • Khởi tạo đối tượng – Khởi tạo vài hay tất biến thành viên – Có thể thực thêm cơng việc khác • Một kiểu hàm thành viên đặc biệt – Được gọi tự động đối tượng khai báo • Cơng cụ hữu ích – Ngun lý LTHĐT DTH INT2202 Định nghĩa hàm kiến tạo • Hàm kiến tạo định nghĩa giống hàm thành viên khác – Ngoại trừ: Nó phải có tên giống hệt tên lớp Khơng thể trả giá trị; kể void! DTH INT2202 Ví dụ định nghĩa hàm kiến tạo • Định nghĩa lớp với hàm kiến tạo: class DayOfYear { public: DayOfYear(int monthValue, int dayValue); //Hàm kiến tạo khởi tạo month & day void input(); void output(); private: int month; int day; } DTH INT2202 Lưu ý hàm kiến tạo • Tên hàm kiến tạo: DayOfYear – Trùng tên lớp • Trong khai báo hàm kiến tạo không định kiểu trả – Kể kiểu void • Hàm kiến tạo nằm vùng public – Nó gọi đối tượng khai báo – Nếu private, khai báo đối tượng DTH INT2202 Gọi tới hàm kiến tạo • Khai báo đối tượng: DayOfYear date1(7, 4), date2(5, 5); • Các đối tượng tạo – Hàm kiến tạo gọi – Các giá trị cặp ngoặc tròn truyền làm số hàm kiến tạo – Các biến thành viên month, day khởi tạo: date1.month  date2.month  date1.day  date2.day  DTH INT2202 Thử lời gọi tương đương • Xét: DayOfYear date1, date2 date1.DayOfYear(7, 4); // không hợp lệ! date2.DayOfYear(5, 5); // khơng hợp lệ! • Có vẻ ổn… – KHÔNG thể gọi tới hàm kiến tạo cách bạn gọi tới hàm thành viên! DTH INT2202 Mã nguồn hàm kiến tạo • Định nghĩa hàm kiến tạo giống định nghĩa hàm thành viên khác: DayOfYear::DayOfYear(int monthValue, int dayValue) { month = monthValue; day = dayValue; } • Chú ý tên giống bên :: – Nhận diện rõ ràng hàm kiến tạo • Chú ý khơng có kiểu trả – Nhất quán với định nghĩa lớp DTH INT2202 Thành viên static • Biến thành viên static – Tất đối tượng lớp “dùng chung” – Một đối tượng biến đổi  tất chịu tác động • Hữu ích cho việc “theo dõi” – Một hàm thành viên gọi lần – Có đối tượng tồn • Trong khai báo, đặt từ khóa static trước kiểu DTH INT2202 Hàm static • Hàm thành viên static – Nếu không cần truy cập đến liệu đối tượng – Và “phải” thành viên lớp – Thì định hàm static • Có thể gọi từ bên ngồi lớp – Khơng qua đối tượng lớp: • Ví dụ: Server::getTurn(); – Thơng qua đối tượng lớp • Cách chuẩn: myObject.getTurn(); • Chỉ sử dụng liệu/hàm static! DTH INT2202 Ví dụ thành viên static: Display 7.6 Thành viên static (1/4) DTH INT2202 Ví dụ thành viên static: Display 7.6 Thành viên static (2/4) DTH INT2202 Ví dụ thành viên static: Display 7.6 Thành viên static (3/4) DTH INT2202 Ví dụ thành viên static: Display 7.6 Thành viên static (4/4) DTH INT2202 vector • Giới thiệu vector – Nhắc lại: mảng tĩnh có kích thước khơng đổi – vector: “là kiểu mảng có kích thước thay đổi” • q trình thực thi chương trình – Định nghĩa Thư Viện Khuôn Mẫu Chuẩn Standard Template Library (STL) • Dùng template lớp DTH INT2202 Căn vector • Tương tự mảng: – Có kiểu sở cho phần tử – Lưu tập giá trị thuộc kiểu sở • Nhưng cách khai báo khác: – Cú pháp: vector • Là dấu hiệu khn mẫu lớp • Bất kiểu liệu đặt vào vị trí Kiểu_Cơ_Sở • Tạo lớp vector “mới” cho kiểu sở định – Ví dụ khai báo: vector v; so sanh voi int a[100]; DTH INT2202 Sử dụng vector • vector v; – "v vector kiểu int" – Gọi tới hàm kiến tạo mặc định • tạo đối tượng vector rỗng • Đánh số để truy cập giống mảng • Nhưng để thêm phần tử: – Phải gọi tới hàm thành viên push_back • Hàm thành viên size() – Trả số phần tử thời DTH INT2202 Ví dụ vector: Display 7.7 Sử dụng vector (1/2) DTH INT2202 Ví dụ vector: Display 7.7 Sử dụng vector (2/2) DTH INT2202 Tính hiệu vector • Hàm thành viên capacity() – Trả dung lượng nhớ cấp phát cho đối tượng – Khơng giống size() – Thường capacity > size • Tự động tăng cần • Nếu quan tâm đến tính hiệu quả: – Có thể thiết lập cách xử lý dung lượng thủ cơng • v.reserve(32); //đặt capacity 32 • v.reserve(v.size()+10); // đặt capacity 10 cộng với size DTH INT2202 Tóm tắt • Hàm kiến tạo: tự động khởi tạo liệu lớp – Được gọi khai báo đối tượng – Hàm kiến tạo trùng tên với lớp • Hàm kiến tạo mặc định khơng có đối số – Nên ln định nghĩa • Biến thành viên lớp – Có thể đối tượng lớp khác • Cần có phần khởi tạo hàm kiến tạo DTH INT2202 Tóm tắt • Tham số tham chiếu – Hiệu truyền giá trị • Có thể viết inline hàm ngắn – Có thể cải thiện hiệu • Biến thành viên static – Được dùng chung tất đối tượng lớp • Các lớp vector – Giống như: “mảng lớn lên hay nhỏ đi" DTH INT2202 Chuẩn bị tới • Đọc chương giáo trình: Nạp chồng tốn tử, Từ khóa friend Tham chiếu DTH INT2202

Ngày đăng: 06/05/2019, 19:35

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

TÀI LIỆU LIÊN QUAN

w