首页 > 编程语言 > 详细

C++ 基类、派生类对象指针的声明与使用

时间:2014-12-15 15:28:07      阅读:338      评论:0      收藏:0      [点我收藏+]

1、类指针、对象指针

class x{

//…

public:

voidshow();

};

main()

{

x x1,*ptr1;           //定义类x的对象x1和类x的指针ptr1

x x2,*ptr2;           //定义类x的对象x2和类x的指针ptr2

x*ptr3;                 //定义类x的指针ptr3

//…

ptr1 =&x1;           //将指针ptr1指向x1对象

ptr2 =&x2;           //将指针ptr2指向x2对象

ptr1-> show();      //

ptr2-> show();      //

ptr3-> show();      //指针ptr3直接指向的是类,调用类公有段成员函数

}

2、引入派生类后的对象指针

(1)指向基类对象的指针指向它的公有派生的对象,指向私有派生对象错误;

eg:

class base{

//…

};

class derive:base{

//…

};

main()

{

base obj1, *ptr1;

derive = obj2;

ptr1 = &obj1;

ptr1 = &obj2;        //错误,指向了一个私有派生类对象

}

(2)指向派生类对象的指针不能指向基类的对象;

eg:

main()

{

base obj1, *ptr1;

derive obj2, *ptr2;

ptr2 = *obj2;           //将指针ptr指向派生类对象obj2

ptr2 = *obj1;           //错误

//…

}

(3)指向基类对象的指针,指向派生类对象时,只能直接指向派生类中从基类继承来的成员,不可直接访问派生类中特定成员;

(4)但可以采用其他方法实现指针指向派生类中特定成员

eg:

class base{

//…

public:

       voidshow();

       voidshow1();

};

class derive: public base{

//…

public:

       voidshow();

       voidshow2();

};

main()

{

base obj1, *ptr1;

derive obj2, *ptr2;

ptr1 = &obj1;               //指针指向基类对象obj1

ptr1 -> show();             //调用基类base的公有段成员函数show

ptr1 = &obj2;               //指针指向派生类对象obj2

ptr1 -> show();             //调用派生类对象obj2从基类继承来的公有段成员函数show

((derive *) ptr1) -> show();   //调用派生类对象obj2的特定成员函数show()

((derive *) ptr1) -> show2(); //调用派生类对象obj2的特定成员函数show2()

ptr1 = &obj1;               //指针重新指向基类对象obj1

ptr1 -> show1();            //调用基类公有段成员函数show1()

}

C++ 基类、派生类对象指针的声明与使用

原文:http://blog.csdn.net/a670449625/article/details/41943459

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!