📅  最后修改于: 2023-12-03 15:13:45.266000             🧑  作者: Mango
继承是C++中面向对象编程的重要特性之一,它可以让一个类继承另一个类的属性和方法。子类可以拥有父类的所有成员函数和成员变量,并且还可以定义自己的成员函数和成员变量。通过继承可以实现代码的重用和多态性,提高代码的可读性和可维护性。
C++中继承有三种方式:
公有继承的形式为:
class Derived:public Base{
// other members
};
在公有继承的情况下,从基类继承的成员在子类中是public的,可以被子类成员函数和外部函数调用。
私有继承的形式为:
class Derived:private Base{
// other members
};
在私有继承的情况下,从基类继承的成员在子类中是private的,只能被子类成员函数调用,不能被外部函数调用,也不能被子类对象调用。
保护继承的形式为:
class Derived:protected Base{
// other members
};
在保护继承的情况下,从基类继承的成员在子类和子类的子类中都是protected的,只能被子类成员函数调用,不能被外部函数调用,也不能被子类对象调用。
在C++中,每个类都有一个基类(父类),除了根类Object之外。如果类A继承类B,则B是A的基类,A是B的派生类。可以形成多层继承关系,即类C继承自类B,类B继承自类A,类A继承自Object。
多重继承是指一个类继承多个基类。例如:
class Derived:public Base1,public Base2{
// other members
};
在多重继承的情况下,派生类会继承多个基类的成员函数和成员变量。需要注意的是,如果多个基类中有同名的成员函数或成员变量,在派生类中需要用作用域限定符来加以区分。例如:
class Base1{
public:
void func1(){}
};
class Base2{
public:
void func1(){}
};
class Derived:public Base1,public Base2{
public:
void func(){
Base1::func1(); // 调用Base1的func1函数
Base2::func1(); // 调用Base2的func1函数
}
};
虚函数是允许在派生类中重新定义的基类成员函数。定义虚函数的语法如下:
class Base{
public:
virtual void func(){};
};
class Derived:public Base{
public:
void func() override { // 使用override关键字覆盖基类的func函数
// 派生类的实现
}
};
通过使用虚函数,可以实现运行时多态性(Runtime Polymorphism)。在调用虚函数时,会根据对象的实际类型来调用相应的函数,而不是根据指针或引用的类型来调用函数。
纯虚函数是没有函数体的虚函数,定义纯虚函数的语法如下:
class Base{
public:
virtual void func()=0; // 纯虚函数
};
一个类中如果有纯虚函数,就称为抽象类,抽象类不能被实例化,只能被用作基类来派生新的类。派生类必须实现基类中的所有纯虚函数才能被实例化。
本文介绍了C++中继承的三种方式,派生类和基类的关系,多重继承,虚函数,以及纯虚函数和抽象类。掌握继承的概念和用法,可以实现代码的复用和多态性,提高开发效率和代码质量。