第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么C++重載賦值運算符 必須要用成員函數(shù) 而不能用普通或者友元

為什么C++重載賦值運算符 必須要用成員函數(shù) 而不能用普通或者友元

C++
回首憶惘然 2019-04-08 09:04:26
為什么C++重載賦值運算符 必須要用成員函數(shù) 而不能用普通或者友元
查看完整描述

3 回答

?
夢里花落0921

TA貢獻(xiàn)1772條經(jīng)驗 獲得超6個贊

1、既然是操作符重載,就必然會訪問類的私有成員變量,根據(jù)類的封裝性要求,除了友元函數(shù)外,其他任何外部操作都是違規(guī)的,所以不能用普通函數(shù)來重載操作符。
2、賦值操作符的重載函數(shù)在沒有顯式定義的情況下,編譯程序會自動生成,即使類成員變量包含有指針,也會將指針的值給予復(fù)制,所以往往會造成多個實例共享一個存儲空間的尷尬局面,當(dāng)最先定義的類被析構(gòu)后,尚存的實例還在指向已被釋放的存儲空間,從而造成成員變量的值已經(jīng)銷毀,而該實例還存在的難以接受的現(xiàn)實。
3、賦值函數(shù)構(gòu)造函數(shù)的重載,不是普通的成員函數(shù),不能用對象來調(diào)用,該函數(shù)只需一個同類型的參數(shù),且以常量、引用的方式出現(xiàn),而友元函數(shù)的參數(shù)與被重載的運算符要求的數(shù)量一致,比如+,-、*、/等都需要兩個參數(shù),這些概念與數(shù)學(xué)概念類似,而賦值操作符=在數(shù)學(xué)概念中不是運算符,所以說,運算符重載友元函數(shù)的參數(shù)不會低于2個(這些運算符是數(shù)學(xué)概念中的運算符)。

查看完整回答
反對 回復(fù) 2019-04-09
?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗 獲得超21個贊

可以用友元和普通函數(shù)的,但是你用成員函數(shù)中,函數(shù)參數(shù)中有個隱藏的參數(shù),進(jìn)行函數(shù)調(diào)用時,會把調(diào)用對象的地址(this指針)傳進(jìn)函數(shù),友元和普通函數(shù)是沒有這個參數(shù)的;
而且重載>> 和 <<必須用友元或者普通函數(shù)(這個前提是不訪問類的私有成員)

查看完整回答
反對 回復(fù) 2019-04-09
?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗 獲得超7個贊

那是因為賦值運算符單目運算符,注意看賦值是怎么運用的
j = i;
不想加法之類的雙目運算符
j = 5 + 6;
你難道想定義一個這樣的普通函數(shù)在表達(dá)賦值?
const int& operator = (const int& val)
{
return val;
}



查看完整回答
反對 回復(fù) 2019-04-09
  • 3 回答
  • 0 關(guān)注
  • 1705 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號