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

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

通過空類指針調(diào)用類方法

通過空類指針調(diào)用類方法

C++
守著星空守著你 2019-07-04 17:32:22
通過空類指針調(diào)用類方法我有以下代碼片段:class ABC{public:         int a;         void print(){cout<<"hello"<<endl;}};int main(){         ABC *ptr = NULL:         ptr->print();         return 0;}它成功地運行了。有人能解釋一下嗎?
查看完整描述

3 回答

?
暮色呼如

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

在這個框架下,大多數(shù)編譯器都會將類轉換為如下所示:

struct _ABC_data{  
    int a ;  };  // table of member functions void _abc_print( _ABC_data* this );

其中_abc_data是一個C型結構

還有你的電話ptr->print();將改為:

_abc_print( NULL)

在執(zhí)行過程中,這是好的,因為您不使用this阿格。


最新情況:(感謝Windows程序員正確評論)
這樣的代碼只適用于執(zhí)行它的CPU。
我們絕對沒有理智的理由去利用這一點。實施特征。這就是為什么:

  1. 因為標準聲明它會產(chǎn)生未定義的行為(任何人能給出一個鏈接或至少引用(第N章,PAR M.)?)
  2. 如果您實際上需要能夠在沒有實例的情況下調(diào)用成員函數(shù),請使用

    靜態(tài)

    關鍵字提供所有可移植性和編譯時檢查。


查看完整回答
反對 回復 2019-07-04
?
泛舟湖上清波郎朗

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

使用不指向有效對象的指針調(diào)用成員函數(shù)將導致未定義行為..什么事都有可能發(fā)生。它可以運行;它可能會崩潰。

在這種情況下,它出現(xiàn)因為this不指向有效對象的指針不用于print.


查看完整回答
反對 回復 2019-07-04
?
至尊寶的傳說

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

大多數(shù)答案都說,不明確的行為可能包括“出現(xiàn)”工作,他們是正確的。

AlexanderMalakhov的回答給出了一些常見的實現(xiàn)細節(jié),并解釋了為什么您的情況似乎有效,但他做了一個輕微的錯誤陳述。他寫道:“既然你不使用這個Arg,所以執(zhí)行時是好的”,意思是“因為你不使用這個Arg,所以在執(zhí)行時看起來還不錯”。

但是請注意,您的代碼仍然是未定義的行為。它打印了你想要的,并把你銀行賬戶的余額轉到了我的賬戶上。謝謝你。

(所以Style說這應該是一個評論,但它太長了。不過,我還是成功了。)


查看完整回答
反對 回復 2019-07-04
  • 3 回答
  • 0 關注
  • 557 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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