一、友元函式
1.友元函式概mlumvmvm述:
(1)友元函式是定義在乙個類外的普通函式。
友元函式和普通函式的定義一樣;在類內必須將該普通函式宣告為友元。
(2)友元函式不是成員函式。
不能通過物件來呼叫,而是直接呼叫;友元函式可以訪問類的公有、受保護以及私有成員,但是必須通過物件、物件指標或者物件引用來訪問。
2.友元函式的宣告:
friend 返回值型別 函式名(參數列);
在類中只需要將這個宣告放置在公有部分即可。
class point
point(double xx, double yy)
friend double distance(point, point);//將distance函式宣告為友元函式
};double distance(point my1, point my2)
3程式設計客棧.友元函式在定義時即普通函式的定義,前面不加friend,在類內宣告時,必須加friend.
在友元函式生效的物件的作用範圍內可以訪問私有、公有以及受保護成員。
main函式不能宣告為類的友元函式,main函式只能做www.cppcns.com主調不能做被調。
二、拷貝建構函式:
1.拷貝建構函式概述:
(1)拷貝建構函式是乙個建構函式,它屬於類的成員函式(普遍定義為public);和類名同名但是無返回值;建立物件時,若該物件的初始化值是另乙個同類物件時(賦值不呼叫)呼叫。
(2)拷貝建構函式的宣告
類名::類名(類名 &物件引用名); 或另一種宣告方式
類名::類名(const 類名 &物件引用名)
注意:拷貝建構函式只有乙個引數,而且引數必須是乙個物件的引用;每個類其實都要有乙個拷貝建構函式,若沒有顯式的定義,那麼系統會自動定義並且設定其屬性為公有。
2.示例程式:
class point
point(int xx, int yy)
point(point &pf)//拷貝建構函式的宣告可以省略第乙個類名和::
};point(point &pf)
int main()
注意:如果沒有使用const修飾,那麼出現pf.x=8這種語句是合法的,但是加了const之後是非法的。另外,引用完pf也會釋放。
本文標題: c++友元函式與拷貝建構函式詳解
本文位址:
Reprint C 友元函式與拷貝建構函式詳解
一 友元函式 1.友元函式概述 1 友元函式是定義在乙個類外的普通函式。友元函式和普通函式的定義一樣 在類內必須將該普通函式宣告為友元。2 友元函式不是成員函式。不能通過物件來呼叫,而是直接呼叫 友元函式可以訪問類的公有 受保護以及私有成員,但是必須通過物件 物件指標或者物件引用來訪問。2.友元函式...
C 每日一練(拷貝建構函式 友元函式)
1.拷貝建構函式 2.友元函式 1.拷貝建構函式 拷貝建構函式,又稱複製建構函式,是一種特殊的建構函式,它由編譯器呼叫來完成一些基於同一類的其他物件的構建及初始化。其唯一的形參必須是引用,但並不限制為const,一般普遍的會加上const限制。此函式經常用在函式呼叫時使用者定義型別的值傳遞及返回。拷...
C 友元函式詳解
1.友元函式的簡單介紹 1.1為什麼要使用友元函式 在實現類之間資料共享時,減少系統開銷,提高效率。如果類a中的函式要訪問類b中的成員 例如 智慧型指標類的實現 那麼類a中該函式要是類b的友元函式。具體來說 為了 使其他類的成員函式直接訪問該類的私有變數。即 允許外面的類或函式去訪問類的私有變數和保...