# 一 继承
## 1.1 继承中的类型兼容性原则
概念:类型兼容性原则是指在需要基类对象的地方,我们都可以直接使用公有派生类对象,通过公有继承,我们可以得到基类中除了构造函数,析构函数外的所有成员,这样,凡是基类可以解决的问题,派生类都可以解决。
(1)子类对象可以当成父类对象使用,子类对象是一种特殊的父类。
(2)父类指针可以直接指向子类对象
(3)父类引用可以直接引用派生类对象

#include <iostream>
using namespace std;
class Parent
{
protected:
int m_a;
int m_b;
public:
Parent()
{
cout<<"Parent的无参构造函数"<<endl;
}
Parent(const Parent &obj)
{
cout<<"Parent的拷贝构造函数"<<endl;
m_a = obj.m_a;
m_b = obj.m_b;
}
void SetAB(int a,int b)
{
m_a = a;
m_b = b;
}
void print()
{
cout<<"m_a = "<<this->m_a<<endl;
cout<<"m_b = "<<this->m_b<<endl;
}
};
class Child:public Parent
{
private:
int m_c;
public:
void SetC(int c)
{
this->m_c = c;
}
void printC()
{
cout<<"c = "<<m_c<<endl;
}
};
int main(int argc, char const *argv[])
{
/*
Parent p1;
p1.SetAB(1,2);
p1.print();
*/
Child c;
c.SetAB(10,20);
c.SetC(30);
c.print();
c.printC();
//Child *pc = &c;
//Parent *p = &c;
//p->SetAB(1,2);
//p->SetC(20);
Parent &p = c;
p.printC();
return 0;
}
## 1.2 多继承
### (1) 概念
派生类中如果只有一个基类,称为单继承,除此之外,c++中还支持多继承,每一个派生类可以继承多个基类。
(2)多继承的语法
用逗号将继承的基类隔开。
#include <iostream>
using namespace std;
class AirPlane
{
protected:
int high;
public:
AirPlane()
{
cout<<"飞机的构造函数"<<endl;
high = 100;
}
void show()
{
cout<<"飞机的高度:"<<high<<endl;
}
};
class Ship
{
protected:
int speed;
public:
Ship()
{
cout<<"轮船的构造函数"<<endl;
speed = 40;
}
void show()
{
cout<<"航行的速度:"<<speed<<endl;
}
};
class WaterPlane:public Ship,public AirPlane
{

本文详细介绍了C++中的继承原理,包括类型兼容性原则,子类对象可以作为父类对象使用,以及多继承的概念和实现。同时探讨了多继承可能遇到的二义性问题和解决方法,如虚继承。此外,文章还讲解了虚函数和多态的机制,强调了虚析构函数的重要性,以及如何利用dynamic_cast和typeid进行动态类型识别。最后,介绍了纯虚函数和抽象类的应用。
最低0.47元/天 解锁文章
1431

被折叠的 条评论
为什么被折叠?



