Hàm tạo, hàm huỷ và các vấn đề liên quan

45 985 1
Hàm tạo, hàm huỷ và các  vấn đề liên quan

Đ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

Hàm tạo, hàm huỷ và các vấn đề liên quan trong C

Chương Hàm tạo, hàm huỷ vấn đề liên quan Chương trình bầy số vấn đề có tính chun sâu lớp như: + Hàm tạo (constructor) + Hàm huỷ (destructor) + Toán tử gán hàm tạo chép + Mối liên quan hàm tạo đối tượng thành phần + Các thành phần tĩnh + Lớp bạn, hàm bạn + Đối tượng + Phương thức inline § Hàm tạo (constructor) 1.1 Công dụng Hàm tạo phương thức lớp (nhưng đặc biệt) dùng để tạo dựng đối tượng Chương trình dịch cấp phát nhớ cho đối tượng sau gọi đến hàm tạo Hàm tạo khởi gán giá trị cho thuộc tính đối tượng thực số công việc khác nhằm chuẩn bị cho đối tượng 1.2 Cách viết hàm tạo 1.2.1 Điểm khác hàm tạo phương thức thông thường Khi viết hàm tạo cần để ý khác biệt hàm tạo so với phương thức khác sau: + Tên hàm tạo: Tên hàm tạo bắt buộc phải trùng với tên lớp + Không khai báo kiểu cho hàm tạo 150 + Hàm tạo khơng có kết trả 1.2.2 Sự giống hàm tạo phương thức thông thường Ngoài điểm khác biệt trên, hàm tạo viết phương thức khác: + Hàm tạo xây dựng bên bên định nghĩa lớp + Hàm tạo có đối khơng có đối + Trong lớp có nhiều hàm tạo (cùng tên khác đối) Ví dụ sau định nghĩa lớp DIEM_DH (Điểm đồ hoạ) có thuộc tính: int x; // hồnh độ (cột) điểm int y; // tung độ (hàng) điểm int m; // mầu điểm đưa vào hàm tạo để khởi gán cho thuộc tính lớp: // Hàm tạo không đối: Dùng giá trị cố định để khởi gán cho // x, y, m DIEM_DH() ; // Hàm tạo có đối: Dùng đối x1, y1, m1 để khởi gán cho // x, y, m // Đối m1 có giá trị mặc định 15 (mầu trắng) DIEM_DH(int x1, int y1, int m1=15) ; class DIEM_DH { private: int x, y, m ; public: //Hàm tạo không đối: khởi gán cho x=0, y=0, m=1 151 // Hàm viết bên định nghĩa lớp DIEM_DH() 152 { x=y=0; m=1; } // Hàm tạo xây dựng bên định nghĩa lớp DIEM_DH(int x1, int y1, int m1=15) ; // Các phương thức khác }; // Xây dựng hàm tạo bên định nghĩa lớp DIEM_DH:: DIEM_DH(int x1, int y1, int m1) { x=x1; y=y1; m=m1; } 1.3 Dùng hàm tạo khai báo + Khi xây dựng hàm tạo, ta dùng chúng khai báo để tạo đối tượng đồng thời khởi gán cho thuộc tính đối tượng tạo Dựa vào tham số khai báo mà Trình biên dịch biết cần gọi đến hàm tạo + Khi khai báo biến đối tượng sử dụng tham số để khởi gán cho thuộc tính biến đối tượng + Khi khai báo mảng đối tượng không cho phép dùng tham số để khởi gán + Câu lệnh khai báo biến đối tượng gọi tới hàm tạo lần + Câu lệnh khai báo mảng n đối tượng gọi tới hàm tạo n lần Ví dụ: DIEM_DH d; // Gọi tới hàm tạo không đối // Kết d.x=0, d.y=0, d.m=1 DIEM_DH u(200,100,4); // Gọi tới hàm tạo có đối // Kết u.x=200, u.y=100, d.m=4 DIEM_DH v(300,250); // Gọi tới hàm tạo có đối // Kết v.x=300, v.y=250, d.m=15 DIEM_DH p[10] ; // Gọi tới hàm tạo không đối 10 lần Chú ý: Với hàm có đối kiểu lớp, đối xem tham số hình thức, khai báo đối (trong dịng đầu hàm) khơng tạo đối tượng khơng gọi tới hàm tạo 1.4 Dùng hàm tạo cấp phát nhớ + Khi cấp phát nhớ cho đối tượng dùng tham số để khởi gán cho thuộc tính đối tượng, ví dụ: DIEM_DH *q =new DIEM_DH(50,40,6);//Gọi tới hàm tạo có đối // Kết q->x=50, q->y=40, q->m=6 DIEM_DH *r = new DIEM_DH ; // Gọi tới hàm tạo không đối // Kết r->x=0, r->y= 0, r->m=1 + Khi cấp phát nhớ cho dẫy đối tượng không cho phép dùng tham số để khởi gán, ví dụ: int n=20; DIEM_DH *s = new DIEM_DH[n] ; // Gọi tới hàm tạo không // đối 20 lần 1.5 Dùng hàm tạo để biểu diễn đối tượng + Như biết, sau định nghĩa lớp DIEM_DH xem lớp kiểu liệu int, double, char, Với kiểu int có int, 356 Với kiểu double có double, 98.75 Khái niệm kiểu int, kiểu double mở rộng cho kiểu DIEM_DH 153 + Để biểu diễn đối tượng (hay gọi: Đối tượng hằng) phải dùng tới hàm tạo Mẫu viết sau: Tên_lớp(danh sách tham số) ; Ví dụ lớp DIEM_DH nói trên, viết sau: 154 DIEM_DH(345,123,8) // Biểu thị đối tượng kiểu DIEM_DH // có thuộc tính x=345, y=123, m=8 Chú ý: Có thể sử dụng đối tượng đối tượng Nói cách khác, dùng đối tượng để thực phương thức, ví dụ viết: DIEM_DH(345,123,8).in(); có nghĩa thực phương thức in() đối tượng 1.6 Ví dụ minh hoạ Chương trình sau minh hoạ cách xây dựng hàm tạo cách sử dùng hàm tạo khai báo, cấp phát nhớ việc biểu diễn đối tượng //CT4_02.CPP #include #include #include class DIEM_DH { private: int x,y,m; public: // Hàm bạn dùng để in đối tượng DIEM_DH friend void in(DIEM_DH d) { cout

Ngày đăng: 18/08/2012, 11:29

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan