chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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

    文章

    526

    瀏覽量

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

    關(guān)注

    22

    文章

    2123

    瀏覽量

    77073
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    服務(wù)交易評(píng)價(jià)

    功能簡(jiǎn)介 服務(wù)交易評(píng)價(jià)是服務(wù)平臺(tái)官方提供的,反映用戶對(duì)服務(wù)交易體驗(yàn)的評(píng)價(jià)系統(tǒng)。在服務(wù)中產(chǎn)生交易的用戶,可以針對(duì)本元服務(wù)的交易體驗(yàn)進(jìn)行打分、發(fā)表評(píng)論。 真實(shí)的評(píng)價(jià)內(nèi)容可以幫助用戶
    發(fā)表于 12-29 10:35

    C語(yǔ)言和C++之間的區(qū)別是什么

    (inheritance)、多態(tài)(polymorphism)等面向?qū)ο缶幊?b class='flag-5'>概念。程序員可以通過(guò)定義類來(lái)創(chuàng)建對(duì)象,并利用類的實(shí)例進(jìn)行操作。 2、類型系統(tǒng)與安全性: C++具有更為嚴(yán)格的類型檢查機(jī)制
    發(fā)表于 12-11 06:23

    發(fā)布服務(wù)設(shè)置上架時(shí)間

    設(shè)置上架時(shí)間 登錄AppGallery Connect,點(diǎn)擊“APP與服務(wù)”。 選擇要發(fā)布的服務(wù)。 左側(cè)導(dǎo)航選擇“應(yīng)用上架 > 版本信息”下待發(fā)布的版本。 進(jìn)入“上架
    發(fā)表于 12-03 09:46

    發(fā)布服務(wù)填寫(xiě)審核信息與聯(lián)系方式

    填寫(xiě)審核信息 登錄AppGallery Connect,點(diǎn)擊“APP與服務(wù)”。 選擇要發(fā)布的服務(wù)。 左側(cè)導(dǎo)航選擇“應(yīng)用上架 > 版本信息”下待發(fā)布的版本。 進(jìn)入“應(yīng)用審核信息”區(qū)域
    發(fā)表于 12-01 14:30

    發(fā)布服務(wù)配置隱私聲明

    服務(wù)必須先使用AGC的隱私聲明托管服務(wù)生成自己的隱私聲明,才能在版本信息頁(yè)面選擇到。詳細(xì)內(nèi)容參見(jiàn)配置隱私聲明(服務(wù))和配置用戶協(xié)議。 登錄AppGallery Connect,點(diǎn)擊“APP與
    發(fā)表于 11-25 11:24

    發(fā)布服務(wù)配置內(nèi)容分級(jí)

    年齡分級(jí)作為服務(wù)的重要屬性,在華為應(yīng)用市場(chǎng)的應(yīng)用詳情頁(yè)展示給用戶,幫助用戶找到適合其年齡段的服務(wù),從而為未成年人用戶打造純凈的使用環(huán)境。 1.AGC提供了調(diào)查問(wèn)卷,根據(jù)您回答的內(nèi)容,自動(dòng)生成
    發(fā)表于 11-21 11:29

    脈沖神經(jīng)模型的硬件實(shí)現(xiàn)

    如圖所示展示了LIF神經(jīng)的膜電勢(shì)Vmem隨時(shí)間戳timestamp動(dòng)態(tài)變化的過(guò)程,當(dāng)接收到輸入脈沖后,LIF神經(jīng)的膜電勢(shì)值Vmem便會(huì)升高,直至達(dá)到閾值電壓Vthersh,此時(shí)神經(jīng)產(chǎn)生輸出脈沖
    發(fā)表于 10-24 08:27

    服務(wù)配置支持設(shè)備

    發(fā)布時(shí),您可以為服務(wù)配置分發(fā)至多種設(shè)備,默認(rèn)發(fā)布設(shè)備為您創(chuàng)建元服務(wù)用時(shí)選擇的設(shè)備類型,您可以根據(jù)實(shí)際情況進(jìn)行修改。您只需發(fā)布一次,用戶即可在多種設(shè)備上使用您的服務(wù)。 登錄AppGallery
    發(fā)表于 10-22 16:54

    服務(wù)上架自檢

    為提高服務(wù)審核通過(guò)率,建議您使用上架自檢功能。該功能使用熱門移動(dòng)終端設(shè)備,按照華為應(yīng)用市場(chǎng)上架標(biāo)準(zhǔn)對(duì)服務(wù)進(jìn)行兼容性、穩(wěn)定性、性能、功耗、UX、隱私等測(cè)試,可幫助您提前發(fā)現(xiàn)和解決問(wèn)題。 登錄
    發(fā)表于 10-21 17:18

    服務(wù)發(fā)布準(zhǔn)備工作

    發(fā)布服務(wù)前,請(qǐng)?jiān)敿?xì)了解華為應(yīng)用市場(chǎng)的審核要求,并提前準(zhǔn)備發(fā)布所需的文件、資源,以便您能順利、快速通過(guò)發(fā)布審核流程。 仔細(xì)閱讀服務(wù)審核指南,了解發(fā)布服務(wù)至華為應(yīng)用市場(chǎng)需要遵循的規(guī)則和要求。 完成
    發(fā)表于 10-10 15:48

    【「Yocto項(xiàng)目實(shí)戰(zhàn)教程:高效定制嵌入式Linux系統(tǒng)」閱讀體驗(yàn)】+基礎(chǔ)概念學(xué)習(xí)理解

    是 Yocto 項(xiàng)目的核心部分之一,書(shū)中對(duì)數(shù)據(jù)的概念、文件、語(yǔ)法以及菜譜和層的相關(guān)內(nèi)容進(jìn)行了詳細(xì)闡述。通過(guò)學(xué)習(xí)這部分內(nèi)容,我了解到數(shù)據(jù)在 Yocto 項(xiàng)目中的重要性,它定義了構(gòu)建系
    發(fā)表于 08-04 22:29

    鴻蒙應(yīng)用服務(wù)開(kāi)發(fā)-Account Kit配置登錄權(quán)限

    一、場(chǎng)景介紹 華為賬號(hào)登錄是基于OAuth 2.0協(xié)議標(biāo)準(zhǔn)和OpenID Connect協(xié)議標(biāo)準(zhǔn)構(gòu)建的OAuth2.0 授權(quán)登錄系統(tǒng),服務(wù)可以方便地獲取華為賬號(hào)用戶的身份標(biāo)識(shí),快速建立服務(wù)內(nèi)
    發(fā)表于 04-15 16:03

    鴻蒙應(yīng)用服務(wù)開(kāi)發(fā)-Account Kit概述

    的守護(hù)措施,如僅允許訪問(wèn)適齡服務(wù)、增強(qiáng)隱私保護(hù)、限制設(shè)備使用時(shí)長(zhǎng)等。 三、基本概念 permission:數(shù)據(jù)或接口權(quán)限,通過(guò)該權(quán)限判斷應(yīng)用是否能獲取對(duì)應(yīng)數(shù)據(jù)或調(diào)用對(duì)應(yīng)接口。 四、約束與限制 華為
    發(fā)表于 03-31 12:08

    C++學(xué)到什么程度可以找工作?

    C++學(xué)到什么程度可以找工作?要使用C++找到工作,特別是作為軟件開(kāi)發(fā)人員或相關(guān)職位,通常需要掌握以下幾個(gè)方面: 1. **語(yǔ)言基礎(chǔ)**:你需要對(duì)C++的核心概念有扎實(shí)的理解,包括但不
    發(fā)表于 03-13 10:19

    HarmonyOS NEXT 原生應(yīng)用/服務(wù)調(diào)試概述

    一、概述 DevEco Studio提供了豐富的HarmonyOS應(yīng)用/服務(wù)調(diào)試能力,支持JS、ArkTS、C/C單語(yǔ)言調(diào)試和ArkTS/JS+C/
    發(fā)表于 02-26 11:03