下面的代碼正常工作,但如果我嘗試訪問函數fun()
中的私有成員變量m_sal
,則會導致分段錯誤。訪問導致seg故障的私有成員
任何人都可以解釋是什麼原因?
class Emp
{
int m_sal;
public :
void fun(char* name)
{
std::cout<<"Name :"<<name<<std::endl;
}
};
int main()
{
Emp *e = NULL;
e->fun("Hi");
return 0;
}
因爲你有未定義的行爲。在這兩種情況下。當行爲未定義時,任何(或任何)結果都是可能的。 – user2079303
從空指針調用函數?我想這就是seg故障的原因 –
可能的重複:http://stackoverflow.com/questions/2474018/when-does-invoking-a-member-function-on-a-null-instance-result-in-undefined- BEHA – user2079303