友元函式與靜態成員變數的例項

2021-06-13 18:57:37 字數 885 閱讀 3105

檔案

#ifndef a_h

#define a_h

class a

;//建構函式初始化

~a(){};

void setval(int a)

friend void printval(class a *);//友元成員函式

private:

int m_a;

static int m_b;//靜態成員變數

};#endif

檔案

#include "stdafx.h"

#include "a.h"

#include using namespace std;

void printval(a *a)//友元函式此處就不用再加friend,只需要在類體內宣告的時候加。virtual也一樣。友元函式不是類的成員函式,所以不用加類的域作用符

friend 型別名 友元函式名(形參表);

然後在類體外對友元函式進行定義,定義的格式和普通函式相同,但可以通過物件作為引數直接訪問物件的私有成員

1)必須在類的說明中說明友元函式,說明時以關鍵字friend開頭,後跟友元函式的函式原型,友元函式的說明可以出現在類的任何地方,包括在private和public部分;

2)注意友元函式不是

類的成員函式,所以友元函式的實現和普通函式一樣,在實現時不用"::"指示屬於哪個類,只有成員函式才使用"::"作用域符號;

3)友元函式不能直接訪問類的成員,只能訪問物件成員,

4)友元函式可以訪問物件的私有成員,但普通函式不行;

5)調用友元函式時,在實際引數中需要指出要訪問的物件,

6)類與類之間的友元關係不能繼承。

靜態成員與友元函式

1 靜態成員 由來 使用全域性物件實現資料共享,由於其處處可見,不夠安全,故可使用靜態成員實現類的多個物件之間的資料共享。包括 靜態資料成員 靜態成員函式 特點 靜態資料成員屬於類,而不屬於某個物件獨有,類的所有物件共享靜態資料成員 靜態資料成員使用關鍵字static,在類體中宣告,在類體外定義,以...

靜態成員與友元

靜態成員與友元 1 實驗目的 學習友元函式的定義和原理。學習靜態資料成員和靜態成員函式的使用。學習靜態成員代替全域性變數實現物件間的共享。2 實驗內容 1 有如下類的定義。類成員函式copy用於實現兩個物件的相互拷貝,請完成該函式的實現。有兩種方法即用成員函式和友元函式實現 include incl...

靜態資料成員 靜態成員函式 友元

建立靜態成員和友元的目的 建立靜態成員主要是解決資料共享問題,而建立友元的目的是為了讓某些函式訪問類中的私有成員。1 靜態資料成員 思考 為什麼要定義靜態資料成員?答 如果不定義為靜態資料成員,那麼每個物件都分別有乙個i的副本 拷貝 但定義為靜態資料成員之後,所有的物件共享有乙個i的副本,就是說i在...