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

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

不同的功能是否具有不同的地址?

不同的功能是否具有不同的地址?

C++
森林海 2019-10-11 09:59:21
考慮以下兩個功能:void foo() {}void bar() {}可以保證&foo != &bar嗎?同樣,template<class T> void foo() { }可以保證&foo<int> != &foo<double>嗎?我知道折疊功能定義有兩個鏈接器。MSVC積極地將COMDAT折疊功能,因此可以將具有相同實現(xiàn)的兩個功能轉(zhuǎn)換為一個功能。副作用是,兩個函數(shù)共享相同的地址。我當時以為這是非法的,但我找不到標準中將其規(guī)定為非法的地方。黃金鏈接器還會折疊帶有safe和的功能all。  safe表示如果使用功能地址,則不折疊,all即使使用地址也將折疊。因此safe,如果函數(shù)具有不同的地址,金的折痕就表現(xiàn)出來。雖然折疊可能是意料之外的,并且代碼依賴于具有不同地址的不同(相同實現(xiàn))函數(shù)(因此折疊可能很危險),但是在當前的C ++標準下,它實際上是非法的嗎?(此時為C ++ 14)(自然,如果safe折疊合法)
查看完整描述

3 回答

?
慕的地6264312

TA貢獻1817條經(jīng)驗 獲得超6個贊

5.10平等經(jīng)營者 [expr.eq]

1 ==(等于)和!=(不等于)運算符組從左到右。操作數(shù)應(yīng)具有算術(shù),枚舉,指針或指向成員類型或type的指針std::nullptr_t。運算符==和!=兩者都產(chǎn)生true或false,即type的結(jié)果bool。在下面的每種情況下,在應(yīng)用了指定的轉(zhuǎn)換之后,操作數(shù)應(yīng)具有相同的類型。

2 如果至少一個操作數(shù)是一個指針,則對兩個操作數(shù)都執(zhí)行指針轉(zhuǎn)換(4.10)和限定轉(zhuǎn)換(4.4),以使其變?yōu)槠鋸?fù)合指針類型(第5條)。比較指針的定義如下:如果兩個指針都為null,都指向相同的函數(shù)或都表示相同的地址(3.9.2),則兩個指針比較相等,否則,它們比較不相等。


讓我們逐點看一下:


兩個空指針比較相等。

對您的理智有好處。

指向同一函數(shù)的兩個指針比較相等。

其他任何事情都將非常令人驚訝。

這也意味著任何inline功能只能有一個離線版本的地址,除非您想使功能指針比較非常復(fù)雜和昂貴。

兩者代表相同的地址。

現(xiàn)在,這就是全部。將其刪除并簡化if and only if為一個簡單的if解釋就可以了,但這是使兩個函數(shù)完全相同的明確要求,只要它不會改變一致性程序的可觀察行為即可。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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