Bài giảng Phương pháp lập trình hướng đối tượng - Thành phần tĩnh, Ba vấn đề con trỏ

Bài tập 5.4: Xây dựng lớp chuỗi (tiếp theo): (Nhóm xử lý nghiệp vụ) So sánh với chuỗi khác. Đổi chữ hoa, thường. Tìm chuỗi con. Trích chuỗi con. (Nhóm toán tử) Toán tử số học: +, =, +=. Toán tử so sánh: >, <, ==, >=, <=, != Toán tử mảng: [ ]. Toán tử ép kiểu: (char *). Toán tử nhập xuất: >>, <<.

ppt23 trang | Chia sẻ: maiphuongtl | Lượt xem: 2107 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Bài giảng Phương pháp lập trình hướng đối tượng - Thành phần tĩnh, Ba vấn đề con trỏ, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
* Phương pháp lập trình hướng đối tượng. Chương 3: Thành phần tĩnh, Ba vấn đề con trỏ * Phương pháp lập trình hướng đối tượng. Nội dung Thành phần tĩnh. Ba vấn đề con trỏ. Bài tập. * Phương pháp lập trình hướng đối tượng. Nội dung Thành phần tĩnh. Ba vấn đề con trỏ. Bài tập. * Phương pháp lập trình hướng đối tượng. Thành phần tĩnh Thành phần của lớp (class members): Thành phần đối tượng (instance members). Thuộc tính và phương thức thông thường. Mỗi đối tượng có bản sao riêng. Thành phần tĩnh (static members). Thuộc tính và phương thức tĩnh. Các đối tượng dùng chung. p1: PhanSo Tử số Mẫu số 2 1 PhanSo Tử số Mẫu số Giá trị lớn nhất Giá trị nhỏ nhất p2: PhanSo Tử số Mẫu số 3 2 Thành phần dùng chung cho MỌI đối tượng của lớp!! * Phương pháp lập trình hướng đối tượng. Thành phần tĩnh Khai báo và sử dụng: Dùng từ khóa static. Truy xuất bằng toán tử ::. class PhanSo { private: static int m_giaTriLN; public: static int layGiaTriLN(); private: int m_tuSo; int m_mauSo; }; PhanSo::m_giaTriLN = 10000; void main() { PhanSo p1(1, 2); PhanSo p2(2, 3); int x1 = PhanSo::layGiaTriLN(); int x2 = p1.layGiaTriLN(); } * Phương pháp lập trình hướng đối tượng. Nội dung Thành phần tĩnh. Ba vấn đề con trỏ. Bài tập. * Phương pháp lập trình hướng đối tượng. Ba vấn đề con trỏ Ví dụ 1: class Array { private: int m_size; int *m_data; public: Array(int size); }; Array::Array(int size) { m_size = size; m_data = new int[m_size]; } void main() { Array a1(5); … } * Phương pháp lập trình hướng đối tượng. Ba vấn đề con trỏ Vấn đề rò rỉ bộ nhớ: Lớp có thuộc tính con trỏ. Đối tượng của lớp bị hủy, bộ nhớ không thu hồi. a1: Array m_size m_data Phải dùng hàm hủy để dọn dẹp!! 101 Rò rỉ bộ nhớ!! 5 * Phương pháp lập trình hướng đối tượng. Ba vấn đề con trỏ Ví dụ 1: class Array { private: int m_size; int *m_data; public: Array(int size); ~Array(); }; Array::~Array() { delete m_data; } void main() { Array a1(5); … } * Phương pháp lập trình hướng đối tượng. Ba vấn đề con trỏ Ví dụ 2: class Array { private: int m_size; int *m_data; public: Array(int size); ~Array(); }; void main() { Array a1(5); Array a2(a1); … } * Phương pháp lập trình hướng đối tượng. Ba vấn đề con trỏ Vấn đề sao chép bộ nhớ (hdsc mặc định): Hàm dựng sao chép mặc định sao chép giá trị từng thuộc tính. a1: Array m_size m_data Phải cài đặt lại hàm dựng sao chép!! 101 5 a2: Array m_size m_data 101 5 Dùng chung bộ nhớ!! Mất bộ nhớ!! * Phương pháp lập trình hướng đối tượng. Ba vấn đề con trỏ Ví dụ 2: class Array { private: int m_size; int *m_data; public: Array(int size); Array(const Array &a); ~Array(); }; void main() { Array a1(5); Array a2(a1); … } Array::Array(const Array &a) { m_size = a.m_size; m_data = new int[m_size]; for (int i = 0; i , =, >, , =, >, <<.

Các file đính kèm theo tài liệu này:

  • pptoop_05_static_members_and_the_big_three_4512.ppt
Tài liệu liên quan