Trong C++, lớp (class) và cấu trúc (struct) đều được sử dụng để định nghĩa kiểu dữ liệu phức tạp, nhưng chúng có một số điểm khác biệt cơ bản:
1. **Mặc định về quyền truy cập**:
- Trong lớp, các thành viên (biến và hàm) mặc định là riêng tư (private).
- Trong cấu trúc, các thành viên mặc định là công khai (public).
2. **Sử dụng**:
- Lớp thường được sử dụng để tạo ra các đối tượng với tính năng và hành vi phức tạp, bao gồm cả kế thừa và đa hình.
- Cấu trúc thường được sử dụng để nhóm dữ liệu lại với nhau mà không cần tính năng phức tạp.
3. **Kế thừa**:
- Lớp hỗ trợ kế thừa, cho phép tạo ra các lớp con từ lớp cha.
- Cấu trúc cũng hỗ trợ kế thừa, nhưng ít phổ biến hơn trong thực tế.
4. **Cú pháp**:
- Cú pháp của lớp và cấu trúc khá giống nhau, nhưng cách sử dụng từ khóa "class" và "struct" khác nhau.
```cpp
class MyClass {
// Thành viên riêng tư
};
struct MyStruct {
// Thành viên công khai
};
```
5. **Tính năng**:
- Lớp có thể chứa các phương thức (hàm thành viên), thuộc tính, và có thể áp dụng các nguyên tắc lập trình hướng đối tượng như đóng gói, kế thừa và đa hình.
- Cấu trúc chủ yếu chỉ chứa dữ liệu mà không có hoặc rất ít phương thức.