C 友元學習筆記

2021-08-10 02:38:36 字數 1687 閱讀 9367

友元可以分為三種:

1.友元函式;

2.友元類;

3.友元成員函式;

友元的好處,通過友元函式,可以賦予函式與類成員函式相同的訪問許可權,友元函式是可以訪問類私有成員的非類成員函式。

因為友元函式不是類的成員函式,所以不能用類物件呼叫成員函式的方式(類成員符)調用友元函式。

友元函式的建立

templateclass matrix

os << endl;

} os << "output matrix finished" << endl;

return os;

};friend istream& operator >> (istream& os, matrix& m)

cout << "input fanished" << endl;

return os;

};public:

matrix(int therows = 0, int thecolumns = 0);

matrix(const matrix&);

~matrix() ;

int rows()const ;

int cols()const ;

t& operator()(int i, int j)const;

matrix& operator=(const matrix&);

matrixoperator+()const;

matrixoperator+(const matrix&)const;

matrixoperator-()const;

matrixoperator-(const matrix&)const;

matrixoperator*(const matrix&)const;

matrix& operator+=(const t&);

void input();

void output();

void transport();

private:

int therows;

int thecolumns;

t* element;

};

friend ostream& operator<<(ostream& os, const matrix& m);
就是建立友元函式的方式;

函式建立了就需要定義

友元函式的定義既不需要類頭,也不要關鍵字friend;

《是最為常用的友元函式,過載《運算子

在平時程式設計中我們經常使用cout,這是乙個ostream的物件,它是智慧型的,可以識別c++的基本型別。

作為友元函式過載《是為了達到給class 物件 輸出帶來方便;

今天在友元上掉進了坑里,按照理論上來說,在類外定義友元函式是沒毛病的,但是我在如下定義的方式是程式編譯不成功,總是報非法使用顯式模板

templatestd::ostream& operator<< (ostream& os, const matrix& m)

os << endl;

} os << "output matrix finished" << endl;

return os;

};

在網上找了很久也沒有解決問題,在摸索中,我在類內直接定義友元函式,然後就順利執行了程式,至於其中的道理,我還需要再摸索摸索!

友元 c 學習筆記

size medium 1.含義 友元關係以 color blue friend color 關鍵字宣告,包括友元函式和友元類。2.作用 訪問與其有好友關係的類中的私有成員。3.友元函式可以是一般函式 非成員函式 也可以是另乙個類中的成員函式。4.友元 利弊 1 利 有助於資料共享,可以提公升程式的...

C 學習筆記 友元

引入友元的目的 讓乙個函式或類訪問另一類中私有成員 友元關鍵字 friend 友元有三種實現方式 1 全域性函式做友元 2 類做友元 3 成員函式做友元 class building public string m sittingroom 客廳 private string m bedroom 臥室...

C 學習筆記 020 友元

1 有些時候,乙個完全無關的類由於某些特殊的原因需要訪問某個protected成員,甚至某個private成員,這就引入了友元的概念 2 友元關係是類之間的一種特殊關係,這種關係不僅允許友元類訪問對方的public方法和屬性,還允許友元訪問對方的protected和private方法和屬性 3 宣告...