[英]C++ standard question
以下結果是否會導致未定義的行為?
指針2的值應為NULL嗎?
double *pointer = 0;
double &value = *pointer;
double *pointer2 = &value;
是。
double *pointer = 0; // init `pointer` to a NULL pointer value
double &value = *pointer; // dereference it
該標准專門針對這種情況-從8.3.2 / 4“參考”開始:
引用應初始化為引用有效的對象或函數。 [注:特別是,空引用不能存在於定義良好的程序中,因為創建此類引用的唯一方法是將其綁定到通過解引用空指針而獲得的“對象”,這會導致未定義的行為。 如9.6中所述,引用不能直接綁定到位字段。 ]
是的,當您在第2行中執行*pointer
時,您將取消引用空指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.