سؤال عن ال enheritance,class,object,pointer في ++C

السلام عليكم في الحقيقة شاهدت فيديو على اليوتيوب و لم افهم بعض الأشياء و هذا ما جعلني اطرح عليكم المشكلة التي لم افهمها عسى احدكم يقدر يوضحلي الفكرة :

في الأول نفترض ان لدينا كلاس اسمه test1 و كلاس اخر اسمه test2 وهذا الاخير ورث جميع خصائص الكلاس test1 ثم في main قمنا بعمل object من نوع test2 هكذا

;test2 ot

صار لدينا object ot من الكلاس test2 ثم عملنا pointer من نوع test1 واشرناه الى ال object ot الذي هو من نوع test2 (الي ورث خصائص test1) هكذا :

;test1 *pt = &ot

السؤال كيف هذا ممكن ؟ لان صاحب الفيديو عمل هذا الشي و اشتغل البرنامج اليس من الفروض ان ال pointer يكون من نفس نوع الكلاس الي يؤشر عليه اذا من الممكن احدكم يفسرلي الفكرة بوضوح و ما الفرق بين هاذين السطرين ؟

;test1 *pt = &ot

;test2 *pt = &ot (من المفروض ان تكون هكذا العبارة الصحيحة او لا)

و شكرا لكم


السلام عليكم أخي العزيز

لنأخذ الموضوع بشكل عملي أكثر

لنفترض أننا نملك class يسمى employee

class employee{
 public :
  void printName(){cout<<"employee class" <<endl;
  }
}

و لدينا class يسمى manager

class manager:public employee {

  public : void printName(){ cout << "manager class" << endl;{ }