C 用友元實現資料隱藏

2021-06-28 11:01:51 字數 701 閱讀 4043

有時候,我們提供給第三方的c++介面,不希望暴露類的私有資料成員,此時可以這樣實現。

inte***ce.h    //對外介面

class b;

class a

private:

b *pb;

public:

a();

~a();

void getage();

void setage();

inte***ce.cpp       //內部實現

#include "inte***ce.h"

class b

private:

int age;

public:

b(int a);

friend class a;

b::b(int a)

a::a():pb(new b(0))

} a::~a()

delete pb;

}int a::getage()

return pb->age;

} void a::setage(int a)

pb->age = a;

這樣,我們就通過類b將私有資料隱藏起來。對外提供的類a宣告為類b的友元,這樣就可以通過操作類b達到運算元據的目的。同時,因為類a只包含乙個類b的指標,所以對外提供的介面也不需要類b的完全宣告,達到了資料隱藏。

inte***ce.cpp

C 友元的學習與使用 友元函式 友元類

class person void displayperson const person p 如上操作是不可行的,因為類外的函式沒有權力呼叫類內 private 封裝的成員變數。如果想讓類外的函式使用類內成員變數,可以通過 friend 宣告該函式為這個類的友元 class person frien...

C 類,建構函式,利用友元判斷2個類資料

stdafx.h 標準系統包含檔案的包含檔案,或是經常使用但不常更改的 特定於專案的包含檔案 pragma once include targetver.h include include include marryh.h todo 在此處引用程式需要的其他標頭檔案宣告 ifndef marryh ...

C 中模板類使用友元模板函式

在類模板中可以出現三種友元宣告 1 普通非模板類或函式的友元宣告,將友元關係授予明確指定的類或函式。2 類模板或函式模板的友元宣告,授予對友元所有例項的訪問權。3 只授予對類模板或函式模板的特定例項的訪問權的友元宣告。要注意的是,友元函式並非成員函式,是改變了它對類成員的訪問許可權。1 沒有什麼好說...