こんにちは、C++ 仮想関数に関して 1 つの質問があります...
class base{
public :
base() { a=5;}
int a;
virtual void print()=0;
int get(){return a;}
int get_var(){ a=5; return a;}
};
int main(void){
base *p;
cout <<"Get Call - No assign\n";
cout <<"Value is :: "<<p->get()<<endl;
cout <<"Get Call - assign value\n";
cout <<"Value is :: "<<p->get_var()<<endl;
return 0;
}
その o/p は :: Get Call - No assign Value is :: 5 セグメンテーション違反
私はこの動作を理解していませんか?
私が考えることができる理由の1つは、ベースが抽象クラスであるため、つまり完全な実装がないため、a = 5を実行しているときにクラッシュすることです。
しかし、最初の呼び出しでも私はを使用しているので、そこでクラッシュしないのはなぜですか
助けてください....