色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C++之友元的學習總結 友元的概念

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-24 17:06 ? 次閱讀

一、友元的概念:

1、什么是友元?

友元是c++中的一種關系

友元關系發生在函數與類之間或者類與類之間

友元關系是單項的,不能傳遞

2、友元的用法:

在類中以friend關鍵字聲明友元

類的友元可以是其它類或者具體函數

友元不是類的一部分

友元不受類中訪問級別的限制

友元可以直接訪問具體類的所有成員

3、友元的語法:

在類中使用friend 關鍵字對函數或者類進行聲明:

class Test

double x;
double y;
friend void func(Test& t);
};
void func(Test& t)

注意:func() 全局函數是 Test 類的友元,func() 可以訪問Test 類的所有成員,但是 func() 不是 Test 的成員函數。

示例代碼:

#include <stdio.h>
#include <math.h>
class Test

double x;
double y;
public
Test(double x,double y)

this->x=x;
this->y=y;

double getX()

return x;

double getY()

return y;

friend double func(Test& t1,Test& t2);
};
double func(Test& t1,Test& t2)

double ret =0;
ret = (t2.y-t1.y)*(t2.y-t1.y)+(t2.x-t1.x)*(t2.x-t1.x);
ret = sqrt(ret);
return ret;

int main()

Test t1(1,2);
Test t2(10,20);
printf("t1(%f,%f)",t1.getX(),t1.getY());
printf("t2(%f,%f)",t2.getX(),t2.getY());
printf("(t1,t2)=%f",func(t1,t2));

return 0;

輸出結果:

root@txp-virtual-machine:/home/txp/add# g++ test.cpp
root@txp-virtual-machine:/home/txp/add# ./a.out
t1(1.000000,2.000000)
t2(10.000000,20.000000)
(t1,t2)=20.124612

4、友元的尷尬:

友元是為了兼顧c語言的高效而誕生的

友元直接破壞了面向對象的封裝性

友元在實際開發產品中的高效是得不償失的

友元在軟件工程中已經慢慢被遺棄了

5、注意事項:

友元關系不具備傳遞性

類的友元可以是其它類的成員函數

類的友元可以是某個完整的類

所有的成員函數都是友元

代碼測試:

#include <stdio.h>
class ClassC

const char* n;
public:
ClassC(const char* n)

this->n = n;


friend class ClassB;
};
class ClassB

const char* n;
public:
ClassB(const char* n)

this->n = n;


void getClassCName(ClassC& c)

printf("c.n = %s", c.n);


friend class ClassA;
};
class ClassA

const char* n;
public:
ClassA(const char* n)

this->n = n;


void getClassBName(ClassB& b)

printf("b.n = %s", b.n);

/*
void getClassCName(ClassC& c)

printf("c.n = %s", c.n);

*/
};
int main()

ClassA A("A");
ClassB B("B");
ClassC C("C");

A.getClassBName(B);
B.getClassCName(C);

return 0;

輸出結果:

root@txp-virtual-machine:/home/txp/add# ./a.out
b.n = B
c.n = C

如果把上面屏蔽的那部分代碼打開,編譯就會報錯(因為友元沒有傳遞性哦):

root@txp-virtual-machine:/home/txp/add# g++ test.cpp
test.cpp: In member function ‘void ClassA::getClassCName(ClassC&)’:
test.cpp:5:17: error: ‘const char* ClassC::n’ is private
const char* n;

test.cpp:48:32: error: within this context
printf("c.n = %s", c.n);

6、小結:

友元是為了兼顧c語言的高效而誕生的

友元直接破壞了面向對象的封裝性

友元關系不具備傳遞性

類的友元可以是其它類的成員函數

類的友元可以是某個完成的類

二、總結:

好了,今天的分享就到這里,如果文章中有錯誤或者不理解的地方,可以交流互動,一起進步。我是txp,下期見!

審核編輯:符乾江
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 可編程邏輯
    +關注

    關注

    7

    文章

    517

    瀏覽量

    44152
  • C++
    C++
    +關注

    關注

    22

    文章

    2114

    瀏覽量

    73805
收藏 人收藏

    評論

    相關推薦

    鴻蒙原生開發手記:01-服務開發

    簡介 服務是鴻蒙中的一種輕量應用形態,無需下載,直接運行。類似于微信小程序,但與小程序不同的是,服務更加輕量。 服務使用原生開發,是系統級提供的,無論從易用性、性能、體驗上,都要比小程序好
    發表于 11-14 17:28

    服務也需要安裝

    服務也需要安裝
    發表于 11-07 16:52

    服務FreeBrowser演示效果

    服務FreeBrowser演示效果
    發表于 11-07 16:50

    螞蟻工場獲億C++輪融資,加速智能制造與工業互聯網布局

    深圳螞蟻工場科技有限公司(簡稱“螞蟻工場”)近日宣布成功完成超過億人民幣的C++輪融資,此輪融資由北京信息產業發展基金和北京經開區產業升級股權投資基金聯合注資。此次融資不僅彰顯了資本市場對螞蟻工場發展潛力的高度認可,也為其未來的發展注入了強勁動力。
    的頭像 發表于 07-19 16:22 ?596次閱讀

    C++中實現類似instanceof的方法

    C++有多態與繼承,但是很多人開始學習C++,有時候會面臨一個常見問題,就是如何向下轉型,特別是不知道具體類型的時候,這個時候就希望C++ 可以向Java或者Python中有insta
    的頭像 發表于 07-18 10:16 ?658次閱讀
    <b class='flag-5'>C++</b>中實現類似instanceof的方法

    服務體驗-服務管理與分享

    服務管理 通過桌面、負一屏、應用市場、服務等場景對服務進行添加、收藏、移除等管理操作。 服務分享 服務與服務卡片支持近場與遠場分享,可流轉給設備也可以分享給聯系人。 收到他人分享的
    發表于 07-16 15:43

    服務體驗-服務發現

    服務發現,無論線上或線下的方式都可以發現服務。 線上:基于用戶意圖。從精準意圖的搜索、用戶事件觸發的推薦到主動探索等場景。用戶可以在設備的負一屏、全局搜索、應用市場、桌面等場景發現服務。 線下
    發表于 07-15 17:02

    服務體驗-服務使用

    服務使用 使用流程:通過服務入口打開元服務→啟動加載→服務落地頁使用→退出服務。 服務狀態:服務狀態可以在系統中多個地方實時顯示和更新,包括鎖屏、實況窗、負一屏。可通過這些系統級入口,開發者
    發表于 07-12 15:57

    人工神經模型的基本構成要素

    人工神經模型是人工智能領域中的一個重要概念,它模仿了生物神經的工作方式,為機器學習和深度學習提供了基礎。本文將介紹人工神經
    的頭像 發表于 07-11 11:28 ?1447次閱讀

    人工神經模型的基本原理是什么

    人工神經模型是人工智能領域中的一個重要概念,它模仿了生物神經系統中的神經行為,為機器學習和深度學習提供了基礎。 一、人工神經
    的頭像 發表于 07-11 11:26 ?871次閱讀

    人工神經模型的三要素是什么

    人工神經模型是人工智能和機器學習領域中非常重要的概念之一。它模仿了生物神經的工作方式,通過數學和算法來實現對數據的處理和學習。 一、人工
    的頭像 發表于 07-11 11:13 ?1037次閱讀

    工業宇宙的應用場景有哪些

    隨著科技的飛速發展,宇宙這一概念逐漸成為人們關注的焦點。宇宙是一個虛擬的、數字化的世界,它將現實世界與虛擬世界相互融合,為人們提供了一個全新的互動、交流和創新的平臺。在工業領域,工業
    的頭像 發表于 06-11 10:24 ?730次閱讀

    國內礦山無人駕駛公司易控智駕獲得3億C++輪融資

    近日,國內礦山無人駕駛公司易控智駕獲得3億C++輪融資,本輪由老股東興杭國投和紫金礦業領投,鄭州人才基金跟投。
    的頭像 發表于 03-13 11:40 ?871次閱讀

    鴻蒙原生應用服務開發-WebGL網頁圖形庫開發概述

    著色器和片段著色器(均由 GLSL 語言所寫)。 四、 運作機制 圖1 WebGL運作機制 應用前端HTML5繪制界面組件。 Native API完成前端JavaScript與C++代碼交互
    發表于 03-08 14:24

    c語言,c++,java,python區別

    操作系統、嵌入式系統等對性能要求較高的場景。C語言的語法相對簡單,學習曲線較平緩,也是學習其他高級語言的入門語言。 C++C++是在
    的頭像 發表于 02-05 14:11 ?2556次閱讀
    主站蜘蛛池模板: 777福彩社区| 国产女人喷潮视频免费 | 叔叔 电影完整版免费观看韩国 | 含羞草最新版本 | 人妻天天爽夜夜爽三区麻豆A片 | 超碰在线视频人人AV | 好大快用力深一点h视频 | 午夜阳光影院在线观看视频 | 久久综合给合久久狠狠狠… | 无码专区无码专区视频网网址 | 色偷偷爱偷偷要 | 视频一区精品自拍亚洲 | 无码欧美毛片一区二区三在线视频 | 9LPORM原创自拍达人 | 最近中文字幕完整版免费高清 | 神电影院午夜dy888我不卡 | 亚洲男同tv | 92电影网午夜福利 | 9277高清在线观看视频 | 无码人妻精品一区二区蜜桃在线看 | 青青草原社区 | 美女扒开腿让男生桶免费看动态图 | 国产亚洲福利在线视频 | 香蕉AV福利精品导航 | 脱jk裙的美女露小内内无遮挡 | 野花视频在线观看免费最新动漫 | 伊人久久综合影院 | 精品国产免费人成视频 | 岛国精品在线观看 | 亚洲精品乱码久久久久久中文字幕 | 伊人久久久久久久久久 | 精品伊人久久 | 国产日韩欧美高清免费视频 | 天天影视网网色色欲 | 久久青青热 | 国产成人无码一区AV在线观看 | 无止侵犯高H1V3无止侵犯 | 仓井空torrent| 久久精品伊人 | 国产一区免费在线观看 | 亚洲免费网站在线观看 |