Trong C++, struct và class về cơ bản là giống nhau. Nhưng có một vài khác biệt nhỏ. Các khác biệt như sau.
Các thành viên của class mặc định là private, nhưng thành viên của struct là public. Xem hai đoạn code sau để thấy sự khác biệt.
Mã ví dụ
#include <iostream> using namespace std; class my_class { int x = 10; }; int main() { my_class my_ob; cout << my_ob.x; }Kết quả
Chương trình này sẽ không biên dịch. Sẽ sinh lỗi compile time cho thành viên dữ liệu private.
Mã ví dụ
#include <iostream> using namespace std; struct my_struct{ int x = 10; }; int main() { my_struct my_ob; cout << my_ob.x; }Kết quả
10
Khi dẫn xuất struct từ class hoặc struct, specifier truy cập mặc định của lớp cơ sở là public, nhưng khi dẫn xuất class thì mặc định là private.
Mã ví dụ
#include <iostream> using namespace std; class my_base_class { public: int x = 10; }; class my_derived_class : my_base_class{ }; int main() { my_derived_class d; cout << d.x; }Kết quả
Chương trình này sẽ không biên dịch. Sẽ sinh lỗi compile time rằng biến x của lớp cơ sở không truy cập được
Mã ví dụ
#include <iostream> using namespace std; class my_base_class { public: int x = 10; }; struct my_derived_struct : my_base_class{ }; int main() { my_derived_struct d; cout << d.x; }Kết quả
10