(34.3)赋值兼容规则

文章目录

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;
		}
};
发布了510 篇原创文章 · 获赞 134 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/u011436427/article/details/104045621
今日推荐