int& fun()
{
int * temp = NULL;
return *temp;
}
上記の方法では、NULLポインタの逆参照を実行しようとしています。私はこの関数を呼び出すときに例外を与えません。戻り値の型が参照渡しである場合、値渡しの場合は例外ではありません。参照のためにNULLポインタの逆参照が(次の行のように)assingされている場合でも、それは与えません。NULLポインタの逆参照による参照の割り当て
int* temp = NULL:
int& temp1 = *temp;
私の質問は、コンパイラが参照の際に参照解除をしないのですか?
参照は内部的にはポインタとして扱われます。参照は内部で使用する構文とはまったく異なります。あなたの逆参照はポインタ値を参照に "割り当てる"だけで、NULLへの参照になります。それはメモリへのアクセスを引き起こさない。値を返すと逆参照によって0にメモリアクセスが発生し、ほとんど常にセグメンテーションが発生します。 – Nobody
この記事をチェックして、NULLポインタがOOPのひどい機能であり、避けられる理由を説明します:http://www.yegor256.com/2014/05/13/why-null-is-bad.html – yegor256