Tại sao không thể gọi hàm khởi tạo trong thân của phương thức?

Cho mình hỏi tại sao C++ yêu cầu mình dùng initialization list mà không khởi tạo phần base của derived object trong thân hàm luôn?

Ví dụ: thay vì:

class Base
{
public:
    Base(int i) {}
};

class Derived: public Base
{
    Derived(): Base(4)
    {
    }
};

mà không phải

class Base
{
public:
    Base(int i) {}
};

class Derived: public Base
{
    Derived()
    {
        Base(4);
    }
};

Đảm bảo nó luôn được gọi trước nhất :thinking:

A post was merged into an existing topic: Topic lưu trữ các post off-topic - version 3

1 Like

A post was merged into an existing topic: Topic lưu trữ các post off-topic - version 3

1 Like

Vì constructor của superclass phải được thực hiện trước tiên. Nói chung nó là như vậy :slight_smile:

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