int& fun()
{
int * temp = NULL;
return *temp;
}
在上面的方法中,我試圖做一個NULL指針的解除引用。當我調用這個函數時,它不會例外。我發現什麼時候返回類型是通過引用它不會給出例外,如果它的價值,那麼它的確如此。即使將NULL指針的解引用分配給引用(如下面的行),它也不會給出。通過解引用NULL指針來分配引用
int* temp = NULL:
int& temp1 = *temp;
這裏我的問題是,不編譯器在引用的情況下做解引用?
引用在內部作爲指針處理,它們在您使用的語法上只是不同。知道你的取消引用只是「分配」指向該引用的指針值,使其成爲NULL的引用。這不會觸發任何內存訪問。當你按值返回時,取消引用將導致0的內存訪問,這幾乎總是給你一個段錯誤。 – Nobody
檢查這篇文章,這解釋了爲什麼空指針是OOP中的一個可怕的功能,應該盡一切可能避免:http://www.yegor256.com/2014/05/13/why-null-is-bad.html – yegor256