使用宣告及類別成員 (僅限 C++)

A 類別定義中的 using 宣告可讓您將 A 基礎類別中資料成員或成員函數的 名稱 引進 A範圍中。

如果您想要從基礎及衍生類別建立一組超載成員函數,或您想要變更類別成員的存取權,則在類別定義中需要 using 宣告。

使用宣告語法

讀取語法圖跳過視覺化語法圖using typename::nested_name_specifierunqualified_id;::unqualified_id;
類別 A 中的使用中宣告可以命名下列其中一項:
  • A 基礎類別的成員
  • 匿名聯集的成員,該聯集是 A 的基礎類別成員
  • 列舉類型的列舉元,它是 A 的基礎類別成員
下列範例示範:
struct Z {
  int g();
};

struct A {
  void f();
  enum E { e };
  union { int u; };
};

struct B : A {
  using A::f;
  using A::e;
  using A::u;
//  using Z::g;
};
編譯器不容許使用宣告 using Z::g ,因為 Z 不是 A的基礎類別。
使用中宣告無法命名範本。 例如,編譯器不容許下列各項:
struct A {
  template<class T> void f(T);
};

struct B : A {
  using A::f<int>;
};
必須可存取使用宣告中所提及名稱的每一個實例。 下列範例示範:
struct A {
private:
  void f(int);
public:
  int f();
protected:
  void g();
};

struct B : A {
//  using A::f;
  using A::g;
};
編譯器不容許使用宣告 using A::f ,因為即使 int A::f() 可存取,也無法從 B 存取 void A::f(int)