每個類定義自己的作用域,當存在繼承關係時,派生類的作用域巢狀在其基類的作用域中。
(1)乙個物件、引用或指標的靜態型別決定了該物件的哪些成員是可見的,即使靜態型別與動態型別不一致(當使用基類的引用或指標時,會發生這種情況)。
(2)派生類的成員將隱藏同名的基類成員, 使用作用域來使用乙個被隱藏的基類成員
(3)名字查詢先於型別檢查
#include
using
namespace
std;
class base
void print()
int geta()
int getb()
void method()
protected:
int a;
private:
int b;
};class derived : public base
public:
void print2()
int geta()
int getb()
void method(int i)
protected:
int a;
private:
int b;
};int main()
測試結果:
繼承中類的作用域
派生類的作用域巢狀在其基類的作用域之內,如果乙個名字無法在派生類的作用域內無法正確解析,則編譯器將繼續在外層的基類作用域中尋找該名字的定義。派生類中能重定義在其直接基類或間接基類中的名字,此時定義在內層作用域 即派生類 的名字將隱藏定義在外層作用域 即基類 的名字。struct base prote...
C 中的類作用域
在類中定義的名稱 如類資料成員名和類成員函式名 的作用域都為整個類,作用域為整個類的名稱只在該類中是已知的,在類外是不可知的。因此,可以在不同類中使用相同的類成員名而不會引起衝突。作用域為類的常量 class bakery 通過上述描述建立乙個由所有物件共享的常量的方式有誤!因為類宣告只是描述了物件...
類的作用域
更多c 類的基本概念 每個類都會定義它自己的作用域。在類的作用域外,普通的資料和函式成員只能由物件 引用或者指標使用成員訪問運算子來訪問。對於類型別成員則使用作用域運算子訪問。不論哪種情況,跟在運算子之後的名字都必須是對應類的成員。作用域和定義在類外部的成員 乙個類就是乙個作用域很好地解釋為什麼當我...