繼承中的類作用域 1

2021-07-22 13:35:30 字數 737 閱讀 7551

每個類定義自己的作用域,當存在繼承關係時,派生類的作用域巢狀在其基類的作用域中。

(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 類的基本概念 每個類都會定義它自己的作用域。在類的作用域外,普通的資料和函式成員只能由物件 引用或者指標使用成員訪問運算子來訪問。對於類型別成員則使用作用域運算子訪問。不論哪種情況,跟在運算子之後的名字都必須是對應類的成員。作用域和定義在類外部的成員 乙個類就是乙個作用域很好地解釋為什麼當我...