1. class pointers, object pointers
Class x{
...
Public
Voidshow ();
};
Main ()
{
x X1,*PTR1; A pointer to the object X1 and class X defining Class X Ptr1
x X2,*PTR2; A pointer to the object X2 and Class X defining Class X PTR2
X*PTR3; Defines a pointer to class X PTR3
...
PTR1 =&x1; Point pointer ptr1 to X1 object
PTR2 =&x2; Point pointer ptr2 to X2 object
Ptr1-> Show (); //
Ptr2-> Show (); //
Ptr3-> Show (); Pointer PTR3 directly to the class, calling the class public segment member function
}
2. Introduction of object pointers after derived classes
(1) A pointer to a base class object points to its public-derived object, pointing to a private derived object error;
eg
Class base{
...
};
Class derive:base{
...
};
Main ()
{
Base Obj1, *PTR1;
derive = Obj2;
PTR1 = &obj1;
PTR1 = &obj2; Error, pointing to a private derived class object
}
(2) A pointer to a derived class object cannot point to the object of the base class;
eg
Main ()
{
Base Obj1, *PTR1;
Derive Obj2, *PTR2;
PTR2 = *obj2; Point the pointer ptr to a derived class object Obj2
PTR2 = *obj1; Error
...
}
(3) A pointer to a base class object that, when pointed to a derived class object, can only point directly to a member in the derived class that inherits from the base class and does not have direct access to a particular member of the derived class;
(4) But other methods can be used to implement pointers to specific members in derived classes
eg
Class base{
...
Public
Voidshow ();
Voidshow1 ();
};
Class Derive:public base{
...
Public
Voidshow ();
Voidshow2 ();
};
Main ()
{
Base Obj1, *PTR1;
Derive Obj2, *PTR2;
PTR1 = &obj1; The pointer points to the base class object Obj1
PTR1, show (); Call the public segment member function of base class base show
PTR1 = &obj2; The pointer points to the derived class object Obj2
PTR1, show (); Calling a derived class object obj2 a public segment member function inherited from a base class show
((derive *) ptr1), show (); Calling a specific member function of a derived class object Obj2 show ()
((derive *) ptr1), Show2 (); Calling a derived class object obj2 a specific member function Show2 ()
PTR1 = &obj1; The pointer re-points to the base class object Obj1
PTR1, Show1 (); Call the base class public segment member function Show1 ()
}
Declaration and use of C + + base class, derived class object pointers