01/10/2018, 09:20

Hỏi về hàm tạo (constructor)

Mọi người cho mình hỏi, giả sử mình có một class ahjhj, hàm tạo không tham số mình viết kiểu này:

ahjhj()
{
    ...
}

Hàm tạo có tham số mình viết kiểu này

ahjhj(Type Data)
{
    if (Data thoả mãn điều kiện A nào đó)
    {
        ...
    }
    else
        ahjhj();
}

Vậy khi mình khai báo noz = new ahjhj(xxx); nhưng xxx không thoả mãn A thì có tương đương với noz = new ahjhj(); không?

rogp10 viết 11:23 ngày 01/10/2018

Không nhánh else sẽ khởi tạo 1 đối tượng ma.

viết 11:37 ngày 01/10/2018

“có thể”, nhưng phải khởi tạo trước… https://en.wikipedia.org/wiki/C++11#Object_construction_improvement

ahjhj(Type Data) : ahjhj()
{
    if (Data thoả mãn điều kiện A nào đó)
    {
        //khởi tạo lại 
        //nếu ahjhj() có cấp phát động thì phải giải phóng nó trước rồi mới gán mới được 
    }
    //khỏi cần else vì ahjhj() đã được gọi  trước rồi
}

mà tại sao ko check điều kiện của data ở ngoài mà lại để ở trong hàm tạo @_@

Trần Hoàn viết 11:29 ngày 01/10/2018

À, mình viết hàm tạo thế quen rồi :)) Bắt lỗi điều kiện ngoài hàm tạo thì phải check mỗi lần gọi, tuy lợi được cái có thể thông báo lỗi cho người nhập lung tung nhưng mà mình hiện thời không có nhu cầu đó XD

Bài liên quan
0