您的位置:首页 > 其它

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

2016-04-01 14:17 274 查看
一个公有派生类的对象在使用上可以被当做基类的对象,反之禁止。

也就是说: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()

注意:尽管是将派生的对象赋值给了基类的指针,但全部调用的基类的函数,因为在子类中的同名函数会被基类同名函数覆盖。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: