不会编程可以做网站吗,搭建网站需要什么技能,怎么恢复网站数据库文件位置,wordpress采集插件 免费下载#xff08;一#xff09;背景引入 尽管派生类对象也是基类对象#xff0c;但派生类类型和基类类型是不同的。在公用继承#xff08;public继承#xff09;中#xff0c;派生类对象能作为基类对象处理。由于派生类具有对应每个基类成员的成员#xff08;派生类的成员通常…一背景引入 尽管派生类对象也是基类对象但派生类类型和基类类型是不同的。在公用继承public继承中派生类对象能作为基类对象处理。由于派生类具有对应每个基类成员的成员派生类的成员通常比基类成员多故派生类的对象赋给基类对象是合理的但若将基类对象赋给派生类对象会使派生类中独有基类没有的成员无定义故这是不允许的除非强制类型转换 二基类指针和派生类指针与基类对象和派生类对象的匹配的4种情况 1基类指针指向基类对象 2派生类指针指向派生类对象 3【常考】基类指针指向派生类对象。此种引用方式安全但只能指向基类成员不能访问基类没有,而派生类独有的成员 4派生类指针指向基类对象。错误除非派生类指针先强制转换为基类指针 ·分别对应下面代码中的4种情况其中3很常见也是多态中的常见用法/考法 三极简代码实例 【极简模型实例】对应下面4种情况已是最精简可运行代码
#include bits/stdc.h
#includeiostream
using namespace std;class A{public:void g(){coutA的gendl; }
};class B:public A{public:void g(){coutB的gendl; }void h(){coutB的hendl;}
};int main(){ A *p1new A; //情况1:输出A的g p1-g();delete p1;B *p2new B; //情况2:输出B的g p2-g(); delete p2;A *p3new B; //情况3:输出A的g.基类指针指向派生类对象,此时只能引用基类成员,不能引用派生类成员 p3-g();
// p3-h(); //【注意】此时只能引用基类成员.即不能访问基类没有,而派生类独有的成员.报错 delete p3; // B *p4new A//情况4:这样不行报错除非派生类指针强转为基类指针 return 0;
}