Hàm tạo và hàm hủy

1>Cấu trúc đơn giản (Simple).

2>Lệnh switch và goto sử dụng trong hàm.

3>Sử dụng trong Stack.

4>Hàm dựng sao chép và toán tử gán bằng.

pdf13 trang | Chuyên mục: Lập Trình Hướng Đối Tượng | Chia sẻ: dkS00TYs | Lượt xem: 2696 | Lượt tải: 0download
Tóm tắt nội dung Hàm tạo và hàm hủy, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Constructor And Destructor
(Hàm tạo và hàm hủy)
1>Cấu trúc đơn giản (Simple).
2>Lệnh switch và goto sử dụng trong hàm.
3>Sử dụng trong Stack.
4>Hàm dựng sao chép và toán tử gán bằng.
1>Simple
• Cấu trúc đơn giản có thể nhận biết được thế nào là 1 
hàm tạo (constructor) và 1 hàm hủy
(destructor).(Thường đi kèm với toán tử new và delete)
– Hàm tạo (constructor):
Ví dụ: 
class X
{
int i; //gt private
public: 
X(); //Đây là 1 constructor
};
+Lưu ý:
Hàm khởi tạo được khai báo trong lớp và phần định nghĩa
hàm có thể viết cả ở trong hàm của lớp hoặc ở ngoài lớp.
Ví dụ: (Ngoài lớp)
class X
{
// Nội dung…
X();
};
void f()
{
X a; //…
}
– Hàm hủy (Destructor):
Ví dụ:
class Y
{
public:
~Y(); //Đây là 1 Destructor
};
• Lưu ý :
– Sau khi khai báo dữ liệu trong C++,các biến chưa đuợc
khởi tạo giá trị ban đầu.
– Đối với các đối tượng và lớp,trong 1 số trường hợp,nếu
các biến chưa được khởi tạo giá trị ban đầu có thể sẽ gặp
một số rắc rối.
– Trong Lập trình hướng đối tượng (LTHDT) hàm khởi tạo
được xây dựng nhằm khởi tạo các thành phần dữ liệu của
đối tượng.
– Hàm khởi tạo của 1 lớp đối tượng là 1 phương thức đặc
biệt đuợc tự động gọi khi đối tượng thuộc lớp đó tạo lập.
2>Lệnh Switch và Goto
-Ta có thể sử dụng 2 lệnh này cùng với hàm khởi tạo và
hàm hủy.
Ví dụ:
class X { public: X(); };
void a(int i) {
if(i < 10) 
{//! goto jump1; // Error: goto bypasses init}
X x1; // Constructor called here (khởi tạo)
jump1:
switch(i) {
case 1 :
X x2; // Constructor called here
break;
//! case 2 : // Error: case bypasses init
X x3; // Constructor called here
break; }
}
int main() { a(9); }///:~ (hủy)
class Stack {
struct Link {
void* data;
Link* next;
Link(void* dat, Link* nxt);
~Link();
}* head;
public:
Stack();
~Stack();
void push(void* dat);
void* peek();
void* pop();
};
Lưu ý:
Stack kô thể chứa cùng lúc hàm tạo và hàm hủy nên ta phải sử
dụng cấu trúc Struct (Struct Link). 
4>Hàm Dựng Sao Chép
-Mỗi lớp nếu kô định nghĩa một hàm khởi tạo
sao chép thì trình biên dịch sẽ tự động cung cấp một
hàm khởi tạo mặc định.Hàm này giúp khởi tạo một
đối tượng thuộc lớp này bằng một đối tượng thuộc
lớp khác.
Ví dụ:
class A
{
private: int x;
public:
A();
}
main()
{
A a(); // Hàm này là mặc định nên
// kô cần khai báo
}
-Hàm khởi tạo sao chép mặc định có nhiệm vụ
sao chép từng bit của đối tượng này để chuyển đến
đối tượng đích.
ptr
b
ptr
b
aa
Đích
ptr = biến con trỏ
• Lưu ý: Nếu như trong lớp (class) đã định nghĩa sẵn 1 
hàm nào đó thì lớp đó sẽ kô chứa 1 hàm dựng mặc định.
Ví dụ:
class A
{
private: int x;
public:
A();
A(int xx);
}
main()
{
A a; // gọi hàm A(int xx)
//kô có hàm mặc định.
}

File đính kèm:

  • pdfHàm tạo và hàm hủy.pdf