友元 在本類之外訪問本類的私有成員變數

2021-06-23 02:21:35 字數 2055 閱讀 3289

1、我們知道,乙個類中的成員函式或是成員變數如果用private或是protected修飾,在該類以外是不能被訪問的。

2、我們定義兩個類cclass_a和cclass_b來輔助說明,在a類中定義乙個受保護或者私有的成員變數m_a 和 乙個受保護或私有的成員函式print_a。如下: 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#pragma once

#include "class_b.h"

#include

using namespace std;

class cclass_a

};

3、然後在b類的建構函式中定義乙個a類的物件object_a,通過這個物件訪問a類中的m_a和print_a。編譯會發生錯誤,資訊如下: 1

4、由此可見,在類b中無法訪問類a中的protected或是private修飾的變數或函式。在c++中有乙個概念,那就是友元(friend),它與封裝相反,是破壞封裝性的,但是在有的時候用起來很方便。如上例,只要在類a的宣告中加一句宣告友元的語句,告訴編譯器類b是類a的朋友,那麼在類b中就能訪問類a中的私有及保護許可權的內容了。 1

c 全域性函式做友元可訪問類的私有成員

1.未設定友元時 不設定友元的情況,類外的全域性函式無法訪問私有成員 2.設定了友元後 設定了友元後 include include using namespace std class building private string m pub void fun int main 3.示例三 和示例...

c 中類外訪問乙個類的私有成員

正常來說,類外無法訪問類內的private成員,只能通過類內成員訪問private成員,在類外,無論是通過類指標還是類物件都無法直接訪問類中的private成員 c 類中的私友成員是不能通指標操作的。include using namespace std class a int main void ...

在標籤之外訪問遍歷的單個物件 作用域擴充套件

我們都知道,遍歷的物件是變數,作用域只能是標籤內,想要在標籤之外繼續運用遍歷的某一物件,不行!如下 配件模板 請選擇模板 配件編號 對於上面div裡面遍歷的物件 modpart 即當選擇某一模板時,它的配件編號不會同時取得 如選擇模板一,配件編號為001,選擇模板二,配件編號為002 因為變數 mo...