有時候,我們提供給第三方的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 沒有什麼好說...