C++與C#有些致命的區(qū)別,如果不注意,很可能導(dǎo)致一些莫名其妙的bug。引用類型就是其中一個。
C#中,引用跟指針比較接近,除了值類型(int, float, struct等),其它類型都是引用類型。它本身是一個棧上面的變量,指向堆上面的具體實例,可以隨意更改它指向的實例。
而在C++中,引用是變量的一個別名而已,它需要在初始化時指向一個實例,之后對它的操作就相當(dāng)于在原來實例上做修改。大部分情況下像C#更改引用的用法是可以編譯通過的:
ClassA a1, a2;
ClassA &a = a1;
a = a2;
不要以為a現(xiàn)在是a2的引用,最后一句是將a2的賦值給a1了!
|
新聞熱點
疑難解答