Tài liệu Hàm tạo (constructor)

Thảo luận trong 'Lập Trình' bắt đầu bởi Thúy Viết Bài, 5/12/13.

  1. Thúy Viết Bài

    Thành viên vàng

    Bài viết:
    198,891
    Được thích:
    173
    Điểm thành tích:
    0
    Xu:
    0Xu
    1.1. Công dụng

    Hàm tạo cũng là một phương thức của lớp (nhưng khá đặc biệt) dùng để tạo dựng một đối tượng mới. Chương trình dịch sẽ cấp phát bộ nhớ cho đối tượng sau đó sẽ gọi đến hàm tạo. Hàm tạo sẽ khởi gán giá trị cho các thuộc tính của đối tượng và có thể thực hiện một số công việc khác nhằm chuẩn bị cho đối tượng mới.

    1.2. Cách viết hàm tạo

    1.2.1. Điểm khác của hàm tạo và các phương thức thông thường

    Khi viết hàm tạo cần để ý 3 sự khác biệt của hàm tạo so với các phương thức khác như sau:

    + Tên của hàm tạo: Tên của hàm tạo bắt buộc phải trùng với tên của lớp.

    + Không khai báo kiểu cho hàm tạo.

    + Hàm tạo không có kết quả trả về.

    1.2.2. Sự giống nhau của hàm tạo và các phương thức thông thường

    Ngoài 3 điểm khác biệt trên, hàm tạo được viết như các phương thức khác:

    + Hàm tạo có thể được xây dựng bên trong hoặc bên ngoài định nghĩa lớp.

    + Hàm tạo có thể có đối hoặc không có đối.

    + Trong một lớp có thể có nhiều hàm tạo (cùng tên nhưng khác bộ đối).

    Ví dụ sau định nghĩa lớp DIEM_DH (Điểm đồ hoạ) có 3 thuộc tính:

    int x; // hoành độ (cột) của điểm

    int y; // tung độ (hàng) của điểm

    int m; // mầu của điểm

    và đưa vào 2 hàm tạo để khởi gán cho các thuộc tính của lớp:

    // Hàm tạo không đối: Dùng các giá trị cố định để khởi gán cho

    // x, y, m

    DIEM_DH() ;

    // Hàm tạo có đối: Dùng các đố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

    // Hàm này viết bên trong định nghĩa lớp

    DIEM_DH()

    {

    x=y=0;

    m=1;

    }

    // Hàm tạo này xây dựng bên ngoài đị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 ngoài định nghĩa lớp

    DIEM_DH:: DIEM_DH(int x1, int y1, int m1)

    {

    x=x1; y=y1; m=m1;
     

    Các file đính kèm:

Đang tải...