Trang tài liệu
Khóa học C++ nền tảng
Chương 8. Cấu trúc và lớp
Cấu trúc và lớp trong C++

Cấu trúc và lớp trong C++

Cấu trúc và lớp là các kiểu dữ liệu do người dùng định nghĩa trong C++ cho phép nhóm các biến thuộc các kiểu dữ liệu khác nhau dưới một tên duy nhất. Chúng giúp quản lý và sắp xếp dữ liệu phức tạp dễ dàng hơn bằng cách tạo các đối tượng có các thuộc tính và hành vi cụ thể. Sự khác biệt chính giữa cấu trúc và lớp là chỉ định truy cập mặc định của chúng: các thành viên của cấu trúc được mặc định là công khai, trong khi các thành viên của lớp là riêng tư.

Cấu trúc

Một cấu trúc được xác định bằng cách sử dụng từ khóa struct, theo sau là tên của cấu trúc và một bộ dấu ngoặc nhọn {} bao quanh các thành viên (biến và/hoặc hàm) của cấu trúc. Các thành viên có thể thuộc các kiểu dữ liệu khác nhau. Để tạo một đối tượng thuộc loại cấu trúc, hãy sử dụng tên cấu trúc theo sau là tên đối tượng.

Đây là một ví dụ về việc xác định một cấu trúc và tạo một đối tượng:

struct Employee {
    int id;
    std::string name;
    float salary;
};

Employee e1; // tạo một đối tượng của cấu trúc 'employee'

Bạn có thể truy cập các thành viên của cấu trúc bằng cách sử dụng toán tử dấu chấm .:

e1.id = 1;
e1.name = "John Doe";
e1.salary = 40000;

Các lớp

Một lớp được định nghĩa bằng cách sử dụng class, theo sau là tên của lớp và một bộ dấu ngoặc nhọn {} bao quanh các thành viên (biến và/hoặc hàm) của lớp. Giống như các cấu trúc, các thành viên của lớp có thể thuộc các kiểu dữ liệu khác nhau. Bạn có thể tạo các đối tượng của một lớp bằng cách sử dụng tên lớp theo sau là tên đối tượng.

Đây là một ví dụ về định nghĩa lớp và tạo đối tượng:

class Student {
    int roll_no;
    std::string name;
    float marks;

public:
    void set_data(int r, std::string n, float m) {
        roll_no = r;
        name = n;
        marks = m;
    }

    void display() {
        std::cout << "Roll no: " << roll_no
                  << "\nName: " << name
                  << "\nMarks: " << marks << std::endl;
    }
};

Student s1; // tạo một đối tượng của lớp 'Student'

Vì các thành viên dữ liệu của một lớp là riêng tư theo mặc định, chúng tôi không thể truy cập chúng trực tiếp bằng cách sử dụng toán tử dấu chấm từ bên ngoài lớp. Thay vào đó, chúng tôi sử dụng các hàm thành viên công khai để đặt hoặc nhận các giá trị của chúng:

s1.set_data(1, "Alice", 95.0);
s1.display();

Đó là một bản tóm tắt ngắn gọn về cấu trúc và lớp trong C++. Hãy nhớ rằng mặc dù chúng có vẻ giống nhau, nhưng các lớp cung cấp nhiều quyền kiểm soát hơn đối với việc đóng gói dữ liệu và có thể được sử dụng để triển khai các tính năng nâng cao hơn như kế thừa và đa hình.