C++ struct và class là hai khái niệm cơ bản trong lập trình hướng đối tượng (OOP), thường gây nhầm lẫn cho người mới bắt đầu. Bài viết này sẽ giúp bạn phân biệt rõ ràng struct
và class
trong C++, cũng như hướng dẫn cách sử dụng chúng hiệu quả.
Struct trong C++ là gì?
Struct
, viết tắt của structure (cấu trúc), là một kiểu dữ liệu do người dùng định nghĩa, cho phép gom nhóm nhiều biến có kiểu dữ liệu khác nhau dưới một tên chung.
Cấu trúc struct trong C++
Ví dụ, để lưu trữ thông tin về một sinh viên, ta có thể sử dụng struct như sau:
struct SinhVien {
char hoTen[50];
int tuoi;
float diemTrungBinh;
};
Trong đó, hoTen
, tuoi
, diemTrungBinh
là các thành viên (member) của struct SinhVien
.
Class trong C++ là gì?
Class
(lớp) cũng là một kiểu dữ liệu do người dùng định nghĩa, tương tự như struct. Tuy nhiên, class mở rộng khả năng của struct bằng cách cho phép định nghĩa các hàm thành viên (member function) bên trong nó.
class SinhVien {
public:
char hoTen[50];
int tuoi;
float diemTrungBinh;
void inThongTin() {
// Code in thông tin sinh viên
}
};
Trong ví dụ trên, inThongTin()
là một hàm thành viên của class SinhVien
.
Sự khác biệt giữa Struct và Class trong C++
Mặc dù có nhiều điểm tương đồng, struct
và class
trong C++ vẫn có một số khác biệt cơ bản:
-
Mặc định truy cập: Thành viên của struct mặc định là
public
(công khai), trong khi thành viên của class mặc định làprivate
(riêng tư). Điều này có nghĩa là, bạn có thể truy cập trực tiếp vào thành viên của struct từ bên ngoài, nhưng không thể làm điều tương tự với class. -
Tính kế thừa: Cả struct và class đều hỗ trợ tính kế thừa. Tuy nhiên, khi kế thừa từ struct, mặc định là kế thừa
public
, trong khi kế thừa từ class mặc định làprivate
.
Nên sử dụng Struct hay Class?
Vậy khi nào nên sử dụng struct
và khi nào nên sử dụng class
?
- Sử dụng
struct
: Khi bạn cần một kiểu dữ liệu đơn giản để lưu trữ dữ liệu, và không cần các tính năng nâng cao như hàm thành viên hay tính đóng gói (encapsulation). - Sử dụng
class
: Khi bạn cần một kiểu dữ liệu phức tạp hơn, với các hàm thành viên để thao tác dữ liệu, và cần kiểm soát quyền truy cập vào dữ liệu thông qua các access specifier (public
,private
,protected
).
Kết luận
Hiểu rõ sự khác biệt giữa cpp struct
và class
là điều quan trọng để bạn có thể viết code C++ hiệu quả và dễ bảo trì. Hãy lựa chọn sử dụng struct
hoặc class
phù hợp với nhu cầu cụ thể của từng trường hợp.