Thành phần tĩnh - Ba vấn đề con trỏ
Thành phần tĩnh.
Ba vấn đề con trỏ.
Bài tập.
Bạn đang xem trước 20 trang nội dung tài liệu 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. 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 dungThà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 dungThà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ĩnhThà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: PhanSoTử sốMẫu số21PhanSoTử sốMẫu sốGiá trị lớn nhấtGiá trị nhỏ nhấtp2: PhanSoTử sốMẫu số32Thà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ĩnhKhai 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 dungThà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: Arraym_sizem_dataPhải dùng hàm hủy để dọn dẹp!!12345101Rò 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: Arraym_sizem_dataPhải cài đặt lại hàm dựng sao chép!!123451015a2: Arraym_sizem_data1015Dù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:
- oop_05_static_members_and_the_big_three_3131.ppt