#include <iostream>
class C
{
private:
int *o;
public:
C(int &i) { *o = i;}
int* get_val() {return o;}
};
int main()
{
int t = 9;
C c(t);
int* p = c.get_val();
std::cout<<*p<<std::endl;
int* h = c.get_val(); //seg fault
std::cout<<*h<<std::endl;
int f = 25;
C g(f);
int* q = g.get_val(); //seg fault
std::cout<<*q<<std::endl;
return 0;
}
C類有兩個對象:'c'和'g'。 返回私有變量的指針第一次正常工作,但是,第二次調用時會導致seg錯誤。爲什麼這樣?在C++中,爲什麼返回不同對象的私有變量指針會導致分段錯誤?
因此,我評論了第二個調用,並試圖創建一個新的對象,並試圖返回私有變量的指針。儘管'g'是C類的另一個對象,但返回它會導致分段錯誤。爲什麼這樣?
'C(int&i){* o = i;}'這表現出未定義的行爲,通過取消引用未初始化的指針。你可能意味着'o =&i;'。 [演示](http://rextester.com/CINTK58780) –
謝謝,那可行! – Harikrishnan