2013-09-30 23 views
0

我目前正在學習編程語言的原理。誰能告訴我這是什麼意思,通過引用可能會導致別名問題?傳遞參考(別名問題)

+0

你是否熟悉通過引用傳遞的是什麼?你是否熟悉別名問題? – yan

+0

我很熟悉通過ref,但我不能理解別名問題的含義。 – ishan3243

+2

「別名」通常指您可以引用值和數據的方式。因此,如果多個名稱無意中引用相同的值,或者失去了別名數據的方式,則可能會出現「別名」問題。 – yan

回答

-2

通過引用傳遞,方法可以更改原始數據。

+1

沒有足夠的信息被認爲是一個答案。 –

0

當多個符號指向同一個內存塊時會發生混疊。這應該避免以減少混淆。下面是混疊的一個簡單的例子:

#include <iostream> 

int main() 
{ 
    int array[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
    int& alias = array[3]; // alias points to 4th element in the array. 

    alias = 100; // 4th element in the array set to 100! 
        // this is best avoided because it is not 
        // immediately obvious that assigning a value 
        // to alias will affect the array. 

    for(std::size_t i = 0; i < sizeof(array)/sizeof(array[0]); ++i) 
     std::cout << array[i] << std::endl; 

    return 0; 
} 

和輸出:

Success time: 0 memory: 3340 signal:0 
0 
1 
2 
100 
4 
5 
6 
7 
8 
9 

在這個例子中它是足夠的alias點陣列中的第四元素,但在大的生產環境中,這明顯可能會造成嚴重破壞並且難以解決錯誤。

+0

以及它的有害程度還不太清楚....也許有一個小例子? – ishan3243