Hỏi về Constructor không tham số trong C++

Chào mọi người, mình có một vài thắc mắc về cách sử dụng constructor trong C++ :smiley:
Mình có một class như sau:

class ToaDo {
    private:
       int x, y;
    public:
       ToaDo(){
          x = 0; y = 0;
       }
}

Mình không hiểu sao phải dùng Constructor như thế này trong khi ta có thể khởi tạo giá trị cho 2 biến x, y ngay khi khai báo, tức là như class ở dưới:

class ToaDo{
private:
int x = 0, y = 0;
}

Vậy lợi ích của việc dùng Constructor là gì, mong các bạn giúp mình :smile:

Vì mình thấy trong nhiều ví dụ thì họ dùng constructor để khởi tạo giá trị, nhưng mình lại thấy khởi tạo ngay khi khai báo lại đỡ tốn thời gian viết code hơn nên mình hỏi câu này.

Không được phép luôn ấy chứ :smiley: C++11 mới cho dùng, mặc dù vẫn là viết trong ctor.

1 Like

viết cách 2 đẹp hơn. C++ cũng khuyến khích: http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c45-dont-define-a-default-constructor-that-only-initializes-data-members-use-in-class-member-initializers-instead

class IntCoord
{
public:
    IntCoord() = default;
    IntCoord(int x, int y) : x{x}, y{y} {}
private:
    int x = 0;
    int y = 0;
};

ko dùng thì có thể do ko xài modern C++ (C++11 trở lên)

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