文章目录
1.赋值兼容规则
-
赋值兼容规则是指:在需要基类对象的任何地方,都可以使用公有派生类的对象来代替
-
通过公有继承,派生类得到了基类中除构造函数,析构函数之外的所有成员。这样,共有派生类实际就具备了基类的所有功能,凡是基类能解决的问题,公有派生类都可以解决
-
赋值兼容规则中所指的替代包括以下的情况:
(1)派生类的对象可以赋值给基类对象
(2)派生类的对象可以初始化基类的引用
(3)派生类对象的地址可以赋值给指向基类的指针(基类的指针可以指向派生类) -
派生类的对象可以赋值给基类,但是基类不能赋值给派生类
-
eg
class Base { }//基类
class Drive :public Base { };//公有派生类
Base b,*pb;//定义基类对象,指针
Derive d;//定义派生类对象
此时,其支持下面三种操作:
b=d;//派生类对象赋值给基类,复制基类继承部门
Base &rb=d;//基类引用到派生类对象
pb=&d;//基类指针指向派生类对象
总结:赋值兼容规则是C++多态性的重要基础之一
- eg2:
# include <iostream>
using namespace std;
class man//基类man
{
protected:
int age;
string name;
public:
man(int a, string n):age(a),name(n){ }//基类的构造函数
void print()
{
cout<<"姓名:"<<name<<", 年龄:"<<age<<endl;
}
int get_age()
{
return age;
}
string get_name()
{
return name;
}
};