メンバー関数にアクセスするために、初期化されていないポインター オブジェクトを使用しています。それは機能し、私はそれがどのように機能するかを知っています。しかし、そのクラスを B で派生させ、そのメンバー関数にアクセスしようとすると、セグメンテーション違反が発生します。2つの異なる動作を示す理由を誰かが説明できますか?
以下はプログラムです: 29 行目にコメントを付けると動作しますが、それがないと失敗します。
#include <iostream>
using namespace std;
class A
{
int no;
public:
void printml(int i)
{
no = i;
cout << "in base: value"<<no;
}
};
class B:public A
{
public:
void printdl()
{
cout << "in derived" ;
}
};
int main()
{
A *ptr;
B *ptr1;
ptr->printml(1);
ptr1->printml(1);
return 0;
}