理论依据:公有派生类继承了基类中除了构造函数和析构函数外的所有非私有成员,且访问权限也完全相同,因此当外界需要基类的时候完全可以用派生类代替。
主要分为以下四种:
1.基类对象=公有派生类对象
2.基类的指针=公有派生类对象的地址
3.基类的指针=指向公有派生类对象的指针
4.基类的引用=公有派生类对象
这四种的共同点是,只可访问派生类中的基类成员,而不可访问新增的成员。
以下是一个例子:
#include<iostream>
using namespace std;
class Base {
int b;
public:
Base(int x):b(x) {
}
int getb() {
return b;
}
};
class Derived :public Base
{
int d;
public:
Derived(int x, int y) :Base(x), d(y)
{
}
int getd() {
return d;
}
};
int main() {
Base b1(11);
Derived d1(22, 33);
b1 = d1;//第一种赋值兼容
cout << "b1.getb()=" << b1.getb() << endl;
Base* pb1 = &d1;//第二种赋值兼容
cout << "pb1->getb()=" << pb1->getb() << endl;
Derived* pd = & d1;
Base* pb2 = pd;//第三种赋值兼容
cout << "pb2->getb()=" << pb2->getb() << endl;
Base& rb = d1;//第四种赋值兼容
cout << "rb.getb()=" << rb.getb() << endl;
return 0;
}