使用宣告及類別成員 (僅限 C++)
A 類別定義中的 using 宣告可讓您將 A 基礎類別中資料成員或成員函數的 名稱 引進 A範圍中。
如果您想要從基礎及衍生類別建立一組超載成員函數,或您想要變更類別成員的存取權,則在類別定義中需要 using 宣告。
類別
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) 。