CPP的继承和多态

简介: CPP的继承和多态

CPP的继承和多态

在C++中,继承(Inheritance)和多态(Polymorphism)是面向对象编程(OOP)的两个核心概念,它们允许我们创建更灵活和可维护的代码结构。

继承(Inheritance)

继承是一种机制,允许一个类(派生类或子类)继承另一个类(基类或父类)的属性和方法。通过继承,我们可以创建一个新的类,这个新类包含现有类的所有特性,并可以添加或覆盖新的特性。

在C++中,使用冒号(:)操作符来表示继承关系。

cpp复制代码

 

class Base {

 

public:

 

void show() {

 

std::cout << "Base class" << std::endl;

 

}

 

};

 

 

 

class Derived : public Base { // Derived继承自Base

 

public:

 

void anotherShow() {

 

std::cout << "Derived class" << std::endl;

 

}

 

};

在这个例子中,Derived类继承了Base类。因此,Derived类的对象可以调用show()方法,该方法是在Base类中定义的。

继承有三种类型:公有继承(public)、私有继承(private)和保护继承(protected)。它们决定了基类成员在派生类中的访问级别。

多态(Polymorphism)

多态允许我们使用基类的指针或引用来操作派生类的对象,同时调用它们各自实现的同名方法。这提供了一种机制,使我们能够以统一的方式处理不同类型的对象。

多态主要通过虚函数(virtual functions)和纯虚函数(pure virtual functions)来实现。

虚函数(Virtual Functions)

在基类中,将成员函数声明为virtual,允许派生类重写该函数。当使用基类的指针或引用来调用虚函数时,会根据实际对象的类型来调用相应的函数实现。

cpp复制代码

 

class Base {

 

public:

 

virtual void show() { // 虚函数

 

std::cout << "Base class" << std::endl;

 

}

 

};

 

 

 

class Derived : public Base {

 

public:

 

void show() override { // 重写虚函数

 

std::cout << "Derived class" << std::endl;

 

}

 

};

 

 

 

int main() {

 

Base* basePtr;

 

Derived derivedObj;

 

basePtr = &derivedObj; // 基类指针指向派生类对象

 

basePtr->show(); // 输出 "Derived class",调用Derived的show()

 

return 0;

 

}

在这个例子中,show()函数在Base类中被声明为虚函数,并在Derived类中被重写。当通过Base类的指针basePtr调用show()函数时,实际调用的是Derived类的show()函数实现。

纯虚函数(Pure Virtual Functions)

纯虚函数是在基类中声明但不定义,且需要在派生类中重写的虚函数。包含纯虚函数的类被称为抽象类(abstract class),它不能被实例化。纯虚函数使用= 0来标记。

cpp复制代码

 

class AbstractBase {

 

public:

 

virtual void pureVirtualFunction() = 0; // 纯虚函数

 

};

 

 

 

class Derived : public AbstractBase {

 

public:

 

void pureVirtualFunction() override { // 在派生类中重写纯虚函数

 

std::cout << "Derived class pure virtual function" << std::endl;

 

}

 

};

在这个例子中,AbstractBase类包含一个纯虚函数pureVirtualFunction(),因此它不能被实例化。Derived类继承了AbstractBase并提供了pureVirtualFunction()的实现。

多态允许我们编写更加通用和灵活的代码,因为它允许我们在运行时确定要执行的具体操作,而不是在编译时。这使得程序能够更好地适应不同的对象和情境。

 

目录
相关文章
|
1月前
|
算法 编译器 程序员
【C++入门到精通】C++入门 —— 继承(基类、派生类和多态性)
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。
82 0
|
1月前
|
存储 C++
CPP的类和对象
CPP的类和对象
19 1
|
11月前
|
测试技术
CPP2022-26-多态专题(下)
CPP2022-26-多态专题(下)
84 0
|
11月前
CPP2022-26-多态专题(上)
CPP2022-26-多态专题
32 0
|
11月前
CPP2022-25-继承与派生(中)
CPP2022-25-继承与派生(中)
52 0
|
11月前
CPP2022-25-继承与派生(上)
CPP2022-25-继承与派生
30 0
|
11月前
CPP2022-25-继承与派生(下)
CPP2022-25-继承与派生(下)
111 0
|
11月前
|
11月前
|
芯片
CPP2022-24-类与对象(下)
CPP2022-24-类与对象
69 0
|
Python
Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)2
Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)2
98 0

热门文章

最新文章