C 友元函式與拷貝建構函式詳解

2022-09-27 02:09:16 字數 1172 閱讀 2238

一、友元函式

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的友元函式。具體來說 為了 使其他類的成員函式直接訪問該類的私有變數。即 允許外面的類或函式去訪問類的私有變數和保...