- class pointer {
01 Một constructor là một hàm thành viên với tên giống như tên của lớp, nhằm thực hiện các công việc ban đầu
như tên của lớp, nhằm thực hiện các công việc ban đầu như tạo ra, sao chép, khởi tạo giá trị đầu của đối tượng - Một destructor là một hàm thành viên đặc biệt của
một lớp. Tên của destructor đối với một lớp là ký tự ngã (~) theo sau bởi tên lớp. phương thức này tự động gọi đến khi kết thúc sự tồn tại của thực thể. Thông thường, phương thức này bao hàm các thao tác : thu hồi vùng nhớ đã cấp phát, đóng tập tin đã mở trong phương thức thiết lập… - Các constructor và destructor được gọi một cách tự
động. Thứ tự các hàm này được gọi phụ thuộc vào thứ tự trong đó sự thực hiện vào và rời khỏi phạm vi mà các đối tượng được khởi tạo. Một cách tổng quát, các destructor được gọi theo thứ tự ngược với thứ tự của các constructor được gọi.Các constructor được gọi của các đối tượng khai báo trong phạm vi toàn cục trước bất kỳ hàm nào (bao
0.5 điểm
0.5 điểm
gồm hàm main()) trong file mà bắt đầu thực hiện. Các destructor tương ứng được gọi khi hàm main() kết thúc hoặc hàm exit() được gọi.Các constructor của các đối tượng cục bộ tự động được gọi khi sự thực hiện đến điểm mà các đối tượng được khai báo. Các destructor tương ứng được gọi khi các đối tượng rời khỏi phạm vi (nghĩa là khối mà trong đó chúng được khai báo). Các constructor và destructor đối với các đối tượng cục bộ tự động được gọi mỗi khi các đối tượng vào và rời khỏi phạm vi.Các constructor được gọi của các đối tượng cục bộ tĩnh (static) khi sự thực hiện đến điểm mà các đối tượng được khai báo lần đầu tiên.
Câu 37: ( 2.0 điểm)
Trong lập trình hướng đối tượng, tính thừa kế là gì? Các loại thừa kế? Cho ví dụ
TT Nội dung Điểm
01 Tính thừa kế là gì
Tính thừa kế là việc sử dụng lại các đặc tính của lớp cơ sở trong các lớp dẫn xuất. Với tính thừa kế, để xây dựng các đối tượng mới, chỉ cần thêm các đặc tính cần thiết vào lớp dẫn xuất. Các loại thừa kế - Thừa kế đơn - Thừa kế bội - Thừa kế ảo Ví dụ 1. Thừa kế đơn:
Lớp cơ sở ANIMAL có lớp dẫn xuất là ELEPHANT: class ANIMAL { public: void Eat(); void Sleep(); void Breathe(); } 0.25 điểm 0.25 điểm 0.5điểm
class ELEPHANT : public ANIMAL { public: void Trumpet(); void Stampede(); } 2. Thừa kế bội:
Lớp xe đạp BICYCLE kế thừa từ hai lớp khung xe FRAME và bánh xe WHEEL
class FRAM{ public:
// các chi tiết tạo nên khung xe };
class WHEEL{ public:
// các chi tiết tạo nên bánh xe }; class BICYCLE:FRAME,WHEEL{ // và các chi tiết khác }; 3. Thừa kế ảo: Lớp B,C thừa kế ảo lớp A class A { public: // các thuộc tính của A };
class B: public virtual A { // …
};
class C: public virtual A { // …
};
0.5điểm
Câu 38: ( 1.5 điểm)
Cho biết ý nghĩa của các thuộc tính truy cập public, private, protected
TT Nội dung Điểm
01 Public :
Các thành viên mang thuộc tính public có thể được truy cập bởi tất cả các hành vi trong và ngoài lớp chứa nó.
0.5điểm
Private :
Các thành viên mang thuộc tính private chỉ có thể được truy cập bởi các hành vi thuộc lớp và các hành vi, các lớp là bạn (friend) của lớp chứa nó
0.5điểm
Protected :
Các thành viên mang thuộc tính protected chỉ có thể được truy cập bởi các thành viên của nó và thành viên trong những lớp hậu duệ của lớp chứa nó.
0.5điểm
Câu 39: ( 2.0 điểm)
Trình bày định nghĩa tính đa hình? Cho ví dụ
TT Nội dung Điểm