国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

概述C++友元函數與拷貝構造函數的介紹

2020-02-24 14:29:38
字體:
來源:轉載
供稿:網友

C++控制類對象的私有部分的訪問,但有時需要訪問類之外的類的私有成員,其實在這種情況下,C++還提供了一種朋友機制,本文是武林技術頻道小編為大家介紹的概述C++友元函數與拷貝構造函數的介紹,一起來學習學習吧!

一、友元函數

1.友元函數概述:

(1)友元函數是定義在一個類外的普通函數。
友元函數和普通函數的定義一樣;在類內必須將該普通函數聲明為友元。

(2)友元函數不是成員函數。
不能通過對象來調用,而是直接調用;友元函數可以訪問類的公有、受保護以及私有成員,但是必須通過對象、對象指針或者對象引用來訪問。

2.友元函數的聲明:

friend 返回值類型 函數名(參數表);
在類中只需要將這個聲明放置在公有部分即可。

class Point{double x, y;public:Point(){x = 0.0; y = 0.0;}Point(double xx, double yy){x = xx; y = yy;}friend double distance(Point, Point);//將distance函數聲明為友元函數};double distance(Point my1, Point my2){return sqrt((my1.x-my2.x)*(my1.y-my2.y));}

3.友元函數在定義時即普通函數的定義,前面不加friend,在類內聲明時,必須加friend.
在友元函數生效的對象的作用范圍內可以訪問私有、公有以及受保護成員。
main函數不能聲明為類的友元函數,main函數只能做主調不能做被調。

二、拷貝構造函數:

1.拷貝構造函數概述:

(1)拷貝構造函數是一個構造函數,它屬于類的成員函數(普遍定義為public);和類名同名但是無返回值;創建對象時,若該對象的初始化值是另一個同類對象時(賦值不調用)調用。

(2)拷貝構造函數的聲明

類名::類名(類名 &對象引用名); 或另一種聲明方式
類名::類名(const 類名 &對象引用名)
注意:拷貝構造函數只有一個參數,而且參數必須是一個對象的引用;每個類其實都要有一個拷貝構造函數,若沒有顯式的定義,那么系統會自動定義并且設置其屬性為公有。

2.示例程序:

class Point{int x, y;public:Point(){x = 0; y = 0;}Point(int xx, int yy){x = xx; y = yy;}Point(Point &pf){x = pf.x; y = pf.y;}//拷貝構造函數的聲明可以省略第一個類名和::};Point(Point &pf){*this = pf; //完成拷貝構造}int main(){Point p1; //調用無參構造Point p2(3, 4); //調用構造Point p3(p2); //調用拷貝構造}

以上就是關于概述C++友元函數與拷貝構造函數的介紹,讀完上面的內容相信大家心中有數了吧?如果你想從事這個行業的工作,建議你可以多多關注武林技術頻道網發布的信息。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定安县| 桐柏县| 南漳县| 青河县| 田东县| 乐平市| 平度市| 甘谷县| 平原县| 江华| 姜堰市| 城固县| 娄烦县| 佳木斯市| 大理市| 信丰县| 江油市| 阿瓦提县| 巴彦县| 竹北市| 平凉市| 疏附县| 仁怀市| 夏邑县| 犍为县| 黔西县| 新干县| 通城县| 长丰县| 枣强县| 台南县| 黄大仙区| 洞头县| 鸡东县| 云霄县| 宁乡县| 三河市| 苍梧县| 泌阳县| 交口县| 前郭尔|