C++ Access Specifiers

C++ Access Specifiers: Định Nghĩa, Cú Pháp và Ví Dụ

Trong lập trình C++, Access Specifiers (các chỉ định quyền truy cập) được sử dụng để xác định mức độ truy cập của các thành viên (biến và hàm) trong lớp. Access Specifiers giúp kiểm soát việc truy cập và bảo vệ dữ liệu, đồng thời đóng vai trò quan trọng trong việc thực hiện các nguyên tắc của lập trình hướng đối tượng.

1. Các loại Access Specifiers

C++ hỗ trợ ba loại Access Specifiers chính:

  • public: Các thành viên được khai báo là public có thể truy cập từ bất kỳ đâu trong chương trình, bao gồm cả bên ngoài lớp.
  • protected: Các thành viên được khai báo là protected chỉ có thể truy cập từ bên trong lớp và các lớp con kế thừa từ lớp đó.
  • private: Các thành viên được khai báo là private chỉ có thể truy cập từ bên trong lớp mà nó được định nghĩa, không thể truy cập từ bên ngoài hoặc từ các lớp con.

2. Cú pháp

Cú pháp khai báo Access Specifiers trong C++ như sau:

class ClassName {
public:
    // Các thành viên public
    void publicMethod();

protected:
    // Các thành viên protected
    int protectedVariable;

private:
    // Các thành viên private
    void privateMethod();
};

3. Ví dụ sử dụng Access Specifiers

#include 
using namespace std;

class MyClass {
public:
    void displayPublic() {
        cout << "This is a public method." << endl;
    }

protected:
    int protectedVar = 10;

private:
    void privateMethod() {
        cout << "This is a private method." << endl;
    }
};

class DerivedClass : public MyClass {
public:
    void accessProtected() {
        cout << "Accessing protected variable: " << protectedVar << endl;
    }
};

int main() {
    MyClass obj;
    obj.displayPublic(); // Có thể truy cập

    //obj.privateMethod(); // Sẽ báo lỗi vì không thể truy cập private method

    DerivedClass derivedObj;
    derivedObj.accessProtected(); // Có thể truy cập protected variable

    return 0;
}

Trong ví dụ trên, chúng ta có một lớp MyClass với các thành viên public, protected và private. Hàm displayPublic() có thể truy cập từ bên ngoài lớp, trong khi privateMethod() không thể truy cập từ bên ngoài. Lớp DerivedClass có thể truy cập vào biến protected từ MyClass.

4. Kết luận

Các Access Specifiers trong C++ là một phần quan trọng của lập trình hướng đối tượng, giúp bảo vệ dữ liệu và kiểm soát quyền truy cập vào các thành viên của lớp. Việc sử dụng đúng loại Access Specifiers giúp code trở nên an toàn và dễ bảo trì hơn. Hy vọng bài viết này đã giúp bạn hiểu rõ hơn về Access Specifiers trong C++.