在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++之友元的學(xué)習(xí)總結(jié) 友元的概念

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-24 17:06 ? 次閱讀

一、友元的概念:

1、什么是友元?

友元是c++中的一種關(guān)系

友元關(guān)系發(fā)生在函數(shù)與類之間或者類與類之間

友元關(guān)系是單項(xiàng)的,不能傳遞

2、友元的用法:

在類中以friend關(guān)鍵字聲明友元

類的友元可以是其它類或者具體函數(shù)

友元不是類的一部分

友元不受類中訪問(wèn)級(jí)別的限制

友元可以直接訪問(wèn)具體類的所有成員

3、友元的語(yǔ)法:

在類中使用friend 關(guān)鍵字對(duì)函數(shù)或者類進(jìn)行聲明:

class Test

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

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

示例代碼:

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

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

this->x=x;
this->y=y(tǒng);

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;

輸出結(jié)果:

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語(yǔ)言的高效而誕生的

友元直接破壞了面向?qū)ο蟮姆庋b性

友元在實(shí)際開(kāi)發(fā)產(chǎn)品中的高效是得不償失的

友元在軟件工程中已經(jīng)慢慢被遺棄了

5、注意事項(xiàng):

友元關(guān)系不具備傳遞性

類的友元可以是其它類的成員函數(shù)

類的友元可以是某個(gè)完整的類

所有的成員函數(shù)都是友元

代碼測(cè)試:

#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;

輸出結(jié)果:

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

如果把上面屏蔽的那部分代碼打開(kāi),編譯就會(huì)報(bào)錯(cuò)(因?yàn)橛言獩](méi)有傳遞性哦):

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、小結(jié):

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

友元直接破壞了面向?qū)ο蟮姆庋b性

友元關(guān)系不具備傳遞性

類的友元可以是其它類的成員函數(shù)

類的友元可以是某個(gè)完成的類

二、總結(jié):

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

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 可編程邏輯
    +關(guān)注

    關(guān)注

    7

    文章

    517

    瀏覽量

    44204
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2114

    瀏覽量

    73952
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    HarmonyOS NEXT應(yīng)用服務(wù)開(kāi)發(fā)Intents Kit(意圖框架服務(wù))習(xí)慣推薦方案概述

    一、習(xí)慣推薦是HarmonyOS學(xué)習(xí)用戶的行為習(xí)慣后做出的主動(dòng)預(yù)測(cè)推薦。 1.開(kāi)發(fā)者將用戶在應(yīng)用/服務(wù)內(nèi)的使用行為向HarmonyOS共享,使得HarmonyOS可以基于共享的數(shù)據(jù)學(xué)習(xí)
    發(fā)表于 11-19 17:59

    鴻蒙原生開(kāi)發(fā)手記:01-服務(wù)開(kāi)發(fā)

    簡(jiǎn)介 服務(wù)是鴻蒙中的一種輕量應(yīng)用形態(tài),無(wú)需下載,直接運(yùn)行。類似于微信小程序,但與小程序不同的是,服務(wù)更加輕量。 服務(wù)使用原生開(kāi)發(fā),是系統(tǒng)級(jí)提供的,無(wú)論從易用性、性能、體驗(yàn)上,都要比小程序好
    發(fā)表于 11-14 17:28

    服務(wù)也需要安裝

    服務(wù)也需要安裝
    發(fā)表于 11-07 16:52

    服務(wù)FreeBrowser演示效果

    服務(wù)FreeBrowser演示效果
    發(fā)表于 11-07 16:50

    螞蟻工場(chǎng)獲億C++輪融資,加速智能制造與工業(yè)互聯(lián)網(wǎng)布局

    深圳螞蟻工場(chǎng)科技有限公司(簡(jiǎn)稱“螞蟻工場(chǎng)”)近日宣布成功完成超過(guò)億人民幣的C++輪融資,此輪融資由北京信息產(chǎn)業(yè)發(fā)展基金和北京經(jīng)開(kāi)區(qū)產(chǎn)業(yè)升級(jí)股權(quán)投資基金聯(lián)合注資。此次融資不僅彰顯了資本市場(chǎng)對(duì)螞蟻工場(chǎng)發(fā)展?jié)摿Φ母叨日J(rèn)可,也為其未來(lái)的發(fā)展注入了強(qiáng)勁動(dòng)力。
    的頭像 發(fā)表于 07-19 16:22 ?641次閱讀

    C++中實(shí)現(xiàn)類似instanceof的方法

    C++有多態(tài)與繼承,但是很多人開(kāi)始學(xué)習(xí)C++,有時(shí)候會(huì)面臨一個(gè)常見(jiàn)問(wèn)題,就是如何向下轉(zhuǎn)型,特別是不知道具體類型的時(shí)候,這個(gè)時(shí)候就希望C++ 可以向Java或者Python中有insta
    的頭像 發(fā)表于 07-18 10:16 ?695次閱讀
    <b class='flag-5'>C++</b>中實(shí)現(xiàn)類似instanceof的方法

    服務(wù)體驗(yàn)-服務(wù)管理與分享

    服務(wù)管理 通過(guò)桌面、負(fù)一屏、應(yīng)用市場(chǎng)、服務(wù)等場(chǎng)景對(duì)服務(wù)進(jìn)行添加、收藏、移除等管理操作。 服務(wù)分享 服務(wù)與服務(wù)卡片支持近場(chǎng)與遠(yuǎn)場(chǎng)分享,可流轉(zhuǎn)給設(shè)備也可以分享給聯(lián)系人。 收到他人分享的
    發(fā)表于 07-16 15:43

    服務(wù)體驗(yàn)-服務(wù)發(fā)現(xiàn)

    服務(wù)發(fā)現(xiàn),無(wú)論線上或線下的方式都可以發(fā)現(xiàn)服務(wù)。 線上:基于用戶意圖。從精準(zhǔn)意圖的搜索、用戶事件觸發(fā)的推薦到主動(dòng)探索等場(chǎng)景。用戶可以在設(shè)備的負(fù)一屏、全局搜索、應(yīng)用市場(chǎng)、桌面等場(chǎng)景發(fā)現(xiàn)服務(wù)。 線下
    發(fā)表于 07-15 17:02

    服務(wù)體驗(yàn)-服務(wù)使用

    服務(wù)使用 使用流程:通過(guò)服務(wù)入口打開(kāi)元服務(wù)→啟動(dòng)加載→服務(wù)落地頁(yè)使用→退出服務(wù)。 服務(wù)狀態(tài):服務(wù)狀態(tài)可以在系統(tǒng)中多個(gè)地方實(shí)時(shí)顯示和更新,包括鎖屏、實(shí)況窗、負(fù)一屏。可通過(guò)這些系統(tǒng)級(jí)入口,開(kāi)發(fā)者
    發(fā)表于 07-12 15:57

    人工神經(jīng)模型的基本構(gòu)成要素

    人工神經(jīng)模型是人工智能領(lǐng)域中的一個(gè)重要概念,它模仿了生物神經(jīng)的工作方式,為機(jī)器學(xué)習(xí)和深度學(xué)習(xí)提供了基礎(chǔ)。本文將介紹人工神經(jīng)
    的頭像 發(fā)表于 07-11 11:28 ?1516次閱讀

    人工神經(jīng)模型的基本原理是什么

    人工神經(jīng)模型是人工智能領(lǐng)域中的一個(gè)重要概念,它模仿了生物神經(jīng)系統(tǒng)中的神經(jīng)行為,為機(jī)器學(xué)習(xí)和深度學(xué)習(xí)提供了基礎(chǔ)。 一、人工神經(jīng)
    的頭像 發(fā)表于 07-11 11:26 ?981次閱讀

    人工神經(jīng)模型的三要素是什么

    人工神經(jīng)模型是人工智能和機(jī)器學(xué)習(xí)領(lǐng)域中非常重要的概念之一。它模仿了生物神經(jīng)的工作方式,通過(guò)數(shù)學(xué)和算法來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)的處理和學(xué)習(xí)。 一、人工
    的頭像 發(fā)表于 07-11 11:13 ?1102次閱讀

    工業(yè)宇宙的應(yīng)用場(chǎng)景有哪些

    隨著科技的飛速發(fā)展,宇宙這一概念逐漸成為人們關(guān)注的焦點(diǎn)。宇宙是一個(gè)虛擬的、數(shù)字化的世界,它將現(xiàn)實(shí)世界與虛擬世界相互融合,為人們提供了一個(gè)全新的互動(dòng)、交流和創(chuàng)新的平臺(tái)。在工業(yè)領(lǐng)域,工業(yè)
    的頭像 發(fā)表于 06-11 10:24 ?814次閱讀

    國(guó)內(nèi)礦山無(wú)人駕駛公司易控智駕獲得3億C++輪融資

    近日,國(guó)內(nèi)礦山無(wú)人駕駛公司易控智駕獲得3億C++輪融資,本輪由老股東興杭國(guó)投和紫金礦業(yè)領(lǐng)投,鄭州人才基金跟投。
    的頭像 發(fā)表于 03-13 11:40 ?909次閱讀

    鴻蒙原生應(yīng)用服務(wù)開(kāi)發(fā)-WebGL網(wǎng)頁(yè)圖形庫(kù)開(kāi)發(fā)概述

    著色器和片段著色器(均由 GLSL 語(yǔ)言所寫)。 四、 運(yùn)作機(jī)制 圖1 WebGL運(yùn)作機(jī)制 應(yīng)用前端HTML5繪制界面組件。 Native API完成前端JavaScript與C++代碼交互
    發(fā)表于 03-08 14:24
    主站蜘蛛池模板: 91三级在线| 欧美日本视频一区 | 天天摸日日添狠狠添婷婷 | 女同性进行性行为视频 | 99免费观看视频 | 久久天天躁狠狠躁夜夜呲 | 免费h视频 | 天天干夜夜操美女 | 九九热视频免费在线观看 | 天天摸天天碰成人免费视频 | 欧美午夜寂寞影院安卓列表 | 波多野结衣在线观看一区二区三区 | 日本免费观看网站 | 狠狠干狠狠干 | 在线三级网 | 日韩午夜在线视频不卡片 | 夜夜想夜夜爽天天爱天天摸 | 天天操天天摸天天干 | 韩国三级久久精品 | 午夜影院a | 国产20岁美女一级毛片 | 丁香婷婷六月天 | 欧美午夜视频在线 | 天堂在线www | 激情五月五月婷婷 | 亚洲video | 国产一区二区丁香婷婷 | 手机在线黄色网址 | 日本v片免费一区二区三区 日本www.色 日本wwwwww | 欧美日韩精品乱国产 | 国产高清在线观看 | 欧美成人免费草草影院 | 中文字幕一区在线观看 | 欧美视频一区二区三区在线观看 | 性欧美bbbbbb | 日日噜噜夜夜狠狠tv视频免费 | 伊人亚洲| 丁香五六月婷婷 | 亚洲人成电影综合网站色 | 黄色录像视频网站 | 免费在线观看黄色 |