vs2003 局部友元访问私有不可访问_C++ 类:重载运算符与友元
18.類中重載運(yùn)算符與友元
上次節(jié)中學(xué)習(xí)了如何在類中重新定義賦值(=)運(yùn)算符,實際上在一個自定義類中除了賦值(=)運(yùn)算符外,類的對象是不可以直接使用運(yùn)算符的,比如你在main函數(shù)中寫這樣的代碼會報錯:
如果想解決這些報錯問題,需要在類中重載這些運(yùn)算符。
18.1 重載
在表達(dá)式中使用
首先在類中聲明要重載的運(yùn)算符:< ,然后去函數(shù)中實現(xiàn)具體的比較規(guī)則。
聲明重載運(yùn)算符函數(shù)的代碼要求按照固定的格式:必須在運(yùn)算符
18.2 重載+運(yùn)算符
如同上面的
18.3 重載<>運(yùn)算符
之前我們可以使用C++ 的流提取運(yùn)算符 >> 和流插入運(yùn)算符 << 來輸入和輸出內(nèi)置的一些數(shù)據(jù)類型,實際上我們也可以重載流提取運(yùn)算符和流插入運(yùn)算符來操作自定義的數(shù)據(jù)類型。
在這里,有一點很重要,我們需要把運(yùn)算符重載函數(shù)聲明為類的友元函數(shù),這樣我們就能不用創(chuàng)建對象而直接調(diào)用函數(shù)了。
重載運(yùn)算符之后,在main函數(shù)中直接通過cout輸出對象的數(shù)據(jù),或cin輸入對象的數(shù)據(jù)。
18.4 友元函數(shù)
類的private的成員只有類的成員函數(shù)才有權(quán)直接訪問,外部函數(shù)無訪問權(quán)限。但是類中有一種特殊的函數(shù)——友元函數(shù),有權(quán)訪問類的所有私有(private)成員和保護(hù)(protected)成員。盡管友元函數(shù)在類的定義中出現(xiàn)過,但友元函數(shù)并不是類的成員函數(shù)。
如果要聲明一個函數(shù)為類的友元函數(shù),需要在類定義中使用關(guān)鍵字 friend,函數(shù)的參數(shù)必須有一個類對象參數(shù),因為只有通過對象才能訪問私有或保護(hù)的成員:
18.5 友元類
友元也可以是一個類,該類被稱為友元類。如果聲明一個類為友元,那整個友元類的所有成員都是這個類的友元。
如果要聲明友元類,需要在類定義中使用關(guān)鍵字 friend,如下所示:
友元類的任何成員函數(shù)都可以訪問類的成員。
總結(jié)
以上是生活随笔為你收集整理的vs2003 局部友元访问私有不可访问_C++ 类:重载运算符与友元的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA读取2g数据的速度_Java 读
- 下一篇: c++ 舞伴配对问题_挑战新物体描述问题