MỤC LỤC
Trong chơng trỡnh trờn đó chỉ rừ: Hàm tạo sao chộp mặc định là cha thoả mãn đối với lớp DT. Nh vây chúng ta sẽ tạo đợc đối tợng u có nội dung ban đầu giống nh d, nhng độc lập với d. Chơng trình sau sẽ minh hoạ điều này: Sự thay đổi của d không làm ảnh hởng đến u và ngợc lại sự thay đổi của u không làm ảnh h- ởng đến d.
Hàm huỷ là một hàm thành viên của lớp (phơng thức) có chức năng ngợc với hàm tạo. Hàm huỷ đợc gọi trớc khi giải phóng (xoá. bỏ) một đối tợng để thực hiện một số công việc có tính “dọn dẹp” tr- ớc khi đối tợng đợc huỷ bỏ, ví dụ nh giải phóng một vùng nhớ mà đối tợng đang quản lý, xoá đối tợng khỏi màn hình nếu nh nó đang hiển thị,.
Tuy nhiên vẫn còn thiếu hàm huỷ để giải phóng vùng nhớ mà đối tợng kiểu DT (cần huỷ) đang quản lý. + Khi chơng trình gọi tới một phơng thức toán tử để thực hiện các phép tính cộng, trừ, nhân đa thức, thì một đối tợng trung gian đợc tạo ra. Một vùng nhớ đợc cấp phát và giao cho nó (đối tợng trung gian) quản lý.
Đối tợng trung gian bị xoá, tuy nhiên chỉ vùng nhớ của các thuộc tính của đối tợng này đợc giải phóng. Còn vùng nhớ (chứa các hệ số của đa thức) mà đối tợng trung gian đang quản lý thì không hề bị giải phóng.
Trong thân hàm sử dụng các đối tợng này để vẽ các hình tròn di chuyển xuống. Vùng nhớ của các thuộc tính của chúng bị thu hồi, nh- ng vùng nhớ cấp phát cho thuộc tính pht cha đợc giải phóng và ảnh của 2 hình tròn (ở phía dới màn hình) vẫn không đợc cất đi. + Điều tơng tự xẩy ra sau khi ra khỏi hàm ht_di_dong_len() : vùng nhớ cấp phát cho thuộc tính pht cha đợc giải phóng và ảnh của 2 hình tròn (ở phía trên màn hình) vẫn không đợc thu dọn.
Toán tử gán (cho lớp) là một trờng hợp đặc biệt so với các toán tử khác. Toán tử gán mặc định sẽ sẽ sao chép đối tợng nguồn (h2) vào đối tợng đích (h1) theo từng bit một. Trong đa số các trờng hợp khi lớp không có các thành phần con trỏ hay tham chiếu thì toán tử gán mặc định là đủ dùng và không cần.
Nhng đối với các lớp có thuộc tính con trỏ nh lớp DT (đa thức), lớp HT (hình tròn) thì toán tử gán mặc định không thích hợp và việc xây dựng toán tử gán là cần thiết.
Nếu phơng thức toán tử gán trả về tham chiếu của đối tợng nguồn, thì có thể dùng toán tử gán thể thực hiện các phép gán liên tiếp nhiều. Với toán tử gán này, chỉ cho phép gán đối tợng nguồn cho một đối tợng đích. Với toán tử gán mới này, ta có thể viết câu lệnh để gán đối tợng nguồn cho nhiều đối tợng đích.
Chú ý: Không phải mọi câu lệnh chứa có dấu = đều gọi đến toán tử gán.
Ngoài ra trong phơng thức có thể đa vào các đối tờng minh đợc khai báo nh đối của hàm. + Với các phơng thức thông thờng, thì đối ẩn biểu thị đối tợng chủ thể trong lời gọi phơng thức. + Với các hàm tạo, thì đối ẩn biểu thị đối tợng mới đợc hình thành.
+ Với các hàm huỷ, thì đối ẩn biểu thị đối tợng sắp bị huỷ bỏ. + Với các phơng thức toán tử, thì đối ẩn biểu thị toán hạng đối t- ợng thứ nhất.
+ Chú ý là trong các phơng thức của lớp bao không cho phép truy nhập trực tiếp đến các thuộc tính của các đối tợng của các lớp thành phÇn. + Vì vậy, khi xây dựng hàm tạo của lớp bao, phải s dụng các hàm tạo của lớp thành phần để khởi gán cho các đối tợng thành phần của líp bao. Ví dụ khi xây dựng hàm tạo của lớp C, cần dùng các hàm tạo của lớp A để khởi gán cho đối tợng thành phần u và dùng các hàm tạo của lớp B để khởi gán cho các đối tợng thành phần p, q.
Mặc dù lớp bao có các thành phần đối tợng, nhng trong lớp bao lại không đợc phép truy nhập đến các thuộc tính của các đối tợng này. + Trong các lớp thành phần, xây dựng sẵn các phơng thức để có thể lấy ra các thuộc tính của lớp. + Trong lớp bao dùng các phơng thức của lớp thành phần để nhận các thuộc tính của các đối tợng thành viên cần dùng đến.
Khi xây dựng phơng thức của lớp bao cần sử dụng các phơng thức của lớp thành phần.
Vì vậy các câu lệnh in giá trị các thành phần này trong phơng thức in là không logic.
Các thuộc tính tenhang và tienban là riêng của mỗi hoá đơn, nên chúng đợc chọn là các thuộc tính thông thờng. Còn các thuộc tính tshd và tstienban là chung cho cả lớp nên chúng đợc chọn là các thuộc tính tĩnh.
Câu lệnh khai báo mảng sẽ gọi tới hàm tạo không đối để tạo các phần tử mảng.
Có thể dùng new và tên lớp để cấp phát một vùng nhớ cho một hoặc một dẫy các đối tợng.
+ Giả sử con trỏ q trỏ tới địa chỉ đầu vùng nhớ của một dẫy đối t- ợng.
+ Cũng giống nh các phần tử dữ liệu khác, một đối tợng có thể đ- ợc khai báo là hằng bằng cách dùng từ khoá const. + Các phơng thức có thể sử dụng cho các đối tợng hằng là hàm tạo và hàm huỷ. Về lý thuyết các đối tợng hằng không thể bị thay đổi, mà chỉ đợc tạo ra hoặc huỷ bỏ đi.
Tuy nhiên, chơng trình EXE vẫn đợc tạo và khi thực hiện chơng trình, thì nội dung các đối tợng hằng vẫn bị thay đổi. Chú ý: Nếu phơng thức đợc khai báo bên trong và định nghĩa bên ngoài lớp, thì từ khoá const cần đợc bổ sung cả trong khai báo và. Trong thân phơng thức const không cho phép làm thay đổi các thuộc tính của lớp.
Vị vậy việc dùng phơng thức const cho các đối t- ợng hằng sẽ đảm bảo giữ nguyên nội dung của các đối tợng hằng. Ví dụ sau về lớp PS (phân số) minh hoạ việc dùng phơng thức const. Hàm bạn (xem mục Đ6, chơng 3) của một lớp, tuy không phải là phơng thức của lớp, nhng có thể truy nhập đến các thành phần riêng (private) của lớp.