訪問說明符

有三個關鍵字充當訪問說明符。這些限制了對說明符後面的類成員的訪問,直到另一個說明符再次更改訪問級別:

關鍵詞 描述
public 每個人都可以訪問
protected 只有類本身,派生類和朋友才能訪問
private 只有類本身和朋友才能訪問

使用 class 關鍵字定義型別時,預設訪問說明符為 private,但如果使用 struct 關鍵字定義型別,則預設訪問說明符為 public

struct MyStruct { int x; };
class MyClass { int x; };

MyStruct s;
s.x = 9; // well formed, because x is public

MyClass c;
c.x = 9; // ill-formed, because x is private

訪問說明符主要用於限制對內部欄位和方法的訪問,並強制程式設計師使用特定的介面,例如強制使用 getter 和 setter 而不是直接引用變數:

class MyClass {

public: /* Methods: */

    int x() const noexcept { return m_x; }
    void setX(int const x) noexcept { m_x = x; }

private: /* Fields: */

    int m_x;

};

使用 protected 對於允許型別的某些功能只能被派生類訪問是很有用的,例如,在下面的程式碼中,方法 calculateValue() 只能從派生自基類 Plus2Base 的類訪問,例如 FortyTwo

struct Plus2Base {
    int value() noexcept { return calculateValue() + 2; }
protected: /* Methods: */
    virtual int calculateValue() noexcept = 0;
};
struct FortyTwo: Plus2Base {
protected: /* Methods: */
    int calculateValue() noexcept final override { return 40; }
};

請注意,friend 關鍵字可用於向訪問受保護和私有成員的函式或型別新增訪問異常。

publicprotectedprivate 關鍵字也可用於授予或限制對基類子物件的訪問。請參見繼承示例。