01/10/2018, 01:02

Thắc mắc về Struct và Class

Chào các sư huynh ạ!
Em có vấn đề như sau:
Sau khi đọc tài liệu về Struct và Class trong C++ em thấy nó chỉ khác nhau là thuộc tính của Struct mặc định là public còn Class là private. Struct với Class cũng có kế thừa, đa hình.
Vậy tại sao người ta lại ít sử dụng Struct thay cho Class???

Mọi người giải đáp giúp em với ạ!
Em xin chân thành cảm ơn!
Chúc các sư huynh 1 ngày code vui vẻ :))

viết 03:08 ngày 01/10/2018

struct xài rất nhiều, functor (function objects) là ví dụ. Có thể hiểu lambda expression trong C++ là anonymous functor cũng được.

ví dụ viết

int main()
{
    auto f = [](){};
    f.x; //cho nó báo lỗi
}

error: ‘struct main()::<lambda()>’ has no member named ‘x’
struct đấy

ví dụ mình vọc cái Boost.MSM, xài struct hết chứ có xài class đâu http://rextester.com/GOSIFW38798

chắc ko xài struct vì dễ gây hiểu lầm với C struct, với lại C++ ban đầu có tên là C with classes, nên đổi tên “struct” thành “class” cho nó ++

Minh Đức viết 03:06 ngày 01/10/2018

đây này sự khác nhau của struct và class trong C#

Văn Dương viết 03:08 ngày 01/10/2018

Thấy thiên hạ đồn thổi struct tạo ra trên stack nên truy cập nhanh hơn class tạo ra trên heap nhưng mà chưa thử. Thử trên C# thấy như nhau.

Có điểm khác là truyền qua lại thì struct truyền tham trị, class là tham chiếu.

Bài liên quan
0