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?

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

1 Like

“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 @_@

1 Like

À, 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

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?