c++基类指针指向派生类对象

来源:百度知道 编辑:UC知道 时间:2024/09/20 07:28:04
就是在基类指针 指向派生类对象后为什么调用起来还是基类的成员?(c++语言)我不上代码了感觉没必要在线等
2楼的我的问题是不设立虚函数 基类指针就只会指向之类了? 不能改变了吗 赋值派生类对象后调用的还是基类成员

//动态联编与虚函数。
//动态绑定联编工作在程序运行时执行,在程序运行时才确定将要调用的函数。虚函数是动态绑定的基础。
//是非静态的成员函数。
//在类的声明中,在函数原型之前写virtual。
//virtual 只用来说明类声明中的原型,不能用在函数实现时。
//具有继承性,基类中声明了虚函数,派生类中无论是否说明,同原型函数都自动为虚函数。
//本质:不是重载声明而是覆盖。
//调用方式:通过基类指针或引用,执行时会根据指针指向的对象的类,决定调用哪个函数。

#include <iostream.h>

class B0 //基类B0声明
{
public:
virtual 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();
}

void main() //主函数
{
B0 *p; //声明基类指针,对所有继承类都适用
B0 b0; //声明基类对