01/10/2018, 16:38

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++
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

Anh chàng Doggo viết 18:38 ngày 01/10/2018

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.

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

ta có thể khởi tạo giá trị cho 2 biến x, y ngay khi khai báo

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

stackoverflow.com
danijar

Why can't we initialize class members at their declaration?

c++, class, constructor, initialization
asked by danijar on 04:42PM - 16 Mar 13
viết 18:45 ngày 01/10/2018

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)

Bài liên quan
0