int main()
{
const int* x;
int* pa = x;//removes const, so UB.
const int*& pb = pa;//error
int* pd = pb;//error
return 0;
}
我知道用pointer to const data
定義pointer to non-const data
是不可能的,因爲它會自動取消允許我修改該值的常量。
但是第二次初始化有什麼問題?我知道一個參考是一個別名,它是如何工作的,但仍然沒有得到實際發生的事情。我想對第二個錯誤的解釋,希望能夠啓發我第三個錯誤。
任何人都可以點亮一下嗎?謝謝!使用非const指針定義對指向常量數據的指針的引用有什麼問題?
謝謝我明白了。我將其總結爲:引用必須與引用對象的類型完全相同,否則將會有一個以模糊方式定義的對象。 – 2013-05-03 23:26:44
@DanielKatz它可以將「const」添加到「頂層」類型。所以你可以用'int *'初始化一個'int * const&'。 – 2013-05-03 23:30:16
當我試圖向別人解釋這件事時,我總是迷惑自己,但你的解釋非常清楚。 – 2013-05-04 00:41:20