Tboy Cá voi
Tổng số bài gửi : 178 Cảm ơn : 413 Danh vọng : 4 Join date : 03/01/2011 Age : 32 Đến từ : TPHCM
| Tiêu đề: Phương thức tự động Sat Jul 02, 2011 6:34 pm | |
| | Sat Jul 02, 2011 6:34 pm Phương thức tự động | | | Nhằm mục đích xây dựng đối tượng không chỉ gồm các dự liệu mà còn có các hành vi được thực thi ngay khi khởi tạo hoặc khi đối tượng mất đi, C++ đã xây dựng các phương thức tự động thực hiện: .Constructor: (thực hiện ngay khi khởi tạo đối tượng) cùng tên với tên class.Destructor: (thực hiện khi hủy bỏ đối tượng) thường cùng tên với class nhưng có thêm dấu ~_Cả constructor và destructor đều không có kiểu trả về và viết hoặc khai báo prototype ở public nhá!!!! Ví dụ: Class CNguoi{... } thì constuctor là CNguoi{...} , destructor là ~CNguoi{...} Một lớp có thể có nhiều constructor nhưng lại có 1 destructor thôi!!!! O.O~~ _Ah`, nếu không viết constructor, destructor thì chương trình sẽ tự động gọi các phương thức tự động chuẩn nguy hỉm ở chỗ là người lập trình hẻm bik nó chạy có ảnh hưởng gì tới chương trình hem !!! Một số constructor, destructor hay dùng _Ví dụ có class CNguoi sau: - Code:
-
class CNguoi { private: int Cao,Nang; public: ..... }; Ta sẽ có 2 constructor thiết lập giá trị ban đầu cho biến 1) Không có đối số: - Code:
-
CNguoi::CNguoi() { Cao=0; Nang=0; } 2) Có đối số: - Code:
-
CNguoi::CNguoi(int x,int y) { Cao=x; Nang=y; } Constructor không thể thiếu là constructor copy: việc này cần thiết khi ta đã có đối tượng a và muốn khai báo đối tượng b cùng lớp có giá trị giống a. - Code:
-
CNguoi::CNguoi( const CNguoi &c) { Cao=c.Cao; Nang=c.Nang; } Copy constructor trong C++ bắt buộc phải truyền tham chiếu &. Nếu không có thể sẽ dẫn đến lặp vô hạn khi copy constructor được gọi. " Khi bạn truyền biến mà không truyền bằng tham chiếu, thì hàm sẽ phải tạo một bản copy cho biến đấy và thao tác trên nó. Đối với copy constructor thì biến truyền vào sẽ là một đối tượng của lớp, để copy một đối tượng của lớp thì nó sẽ gọi copy constructor -> Lặp vô hạn " . nếu trong class có tạo mảng thì destructor sẽ viết lệnh xóa!!! Tboy
| | | | | |
|