01/10/2018, 17:17

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);
    }
};
Trương Tấn Phát viết 19:25 ngày 01/10/2018

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

HK boy viết 19:19 ngày 01/10/2018

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

HK boy viết 19:21 ngày 01/10/2018

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

rogp10 viết 19:18 ngày 01/10/2018

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

Bài liên quan
0