码迷,mamicode.com
首页 > 其他好文 > 详细

类型兼容---子类的对象可以给父类指针赋值

时间:2016-04-01 14:51:54      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:

一个公有派生类的对象在使用上可以被当做基类的对象,反之禁止。

也就是说:1.派生类的对象可以赋值给基类的对象

如 

B:public A    
A a;
B b;
a = b;//语法上是允许的

2、派生类的对象可以初始化基类的引用:

void f(A &a)
{}

int main()
{
B b;
f(b);
}

3、指向基类的指针可以指向派生类

A *p;
p = new B();

例子:

#include <iostream>
using namespace std;

class B0    //基类B0声明
{ public:
    void display(){cout<<"B0::display()"<<endl;}    //公有成员函数
};
class B1: public B0    
{
 public:
    void display(){cout<<"B1::display()"<<endl;}    
};
class D1: public B1    
{
public:
    void display(){cout<<"D1::display()"<<endl;}    
};
void fun(B0 *ptr)    
{    ptr->display();    //"对象指针->成员名"  
}
int main()    //主函数
{    B0 b0;    //声明B0类对象
    B1 b1;    //声明B1类对象
    D1 d1;    //声明D1类对象
    B0 *p;    //声明B0类指针
    p=&b0;    //B0类指针指向B0类对象
    fun(p);
    p=&b1;    //B0类指针指向B1类对象
    fun(p);
    p=&d1;    //B0类指针指向D1类对象
    fun(p);
}
结果:
B0::display()
B0::display()
B0::display()

注意:尽管是将派生的对象赋值给了基类的指针,但全部调用的基类的函数,因为在子类中的同名函数会被基类同名函数覆盖。

 

类型兼容---子类的对象可以给父类指针赋值

标签:

原文地址:http://www.cnblogs.com/defen/p/5344834.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!