01/10/2018, 00:27

Làm sao gọi constructor mặc định trong một constructor có tham số?

Câu hỏi của em như title ạ.
Làm sao để gọi hàm dựng mặc định trong hàm dựng khác.
Ví dụ như bên java có thể gọi,.
this();

Em muốn khợi gán trước các giá trị mặc định trước khi gán những giá trị mới khác.
Em cảm ơn ạ.

viết 02:36 ngày 01/10/2018

em chỉ cần gán

ThuNghiem(int a)
{
    this->a = a;
}

là đủ rồi. this chính là con trỏ tới đối tượng mà em đang khởi tạo, khỏi cần tạo con trỏ ptr rồi cấp phát cho nó cái gì nữa.

cách viết trên có thể viết ngắn lại thành

ThuNghiem(int _a)
{
    a = _a; //_a để tránh nhầm lẫn với this->a
}

nhưng trước khi bước vào trong { } thì this->a hay a đã được khởi tạo rồi. Vì vào trong thân hàm khởi tạo thì em có thể sử dụng a ngay, ví dụ

ThuNghiem(int _a)
{
    cout << a; //ok, a đã được khởi tạo
    a = _a;
}

nhưng cái em muốn ở hàm khởi tạo là khởi tạo giá trị của a. Code trên chỉ gán giá trị cho a chứ ko phải khởi tạo nó. Muốn thật sự khởi tạo a thì em phải viết là

ThuNghiem(int _a) : a(_a) {}

với kiểu gán như thế này thì em ko sợ bị trùng tên, nên có thể viết luôn thành:

ThuNghiem(int a) : a(a) {}
Trần Huy viết 02:34 ngày 01/10/2018

À em hiểu rồi ạ, em cảm ơn anh

Bài liên quan
0