C++ 接口(抽象类)学习笔记

什么是接口(抽象类)?

在 C++ 中,接口可以通过抽象类来实现。抽象类是一种不能被实例化的类,其中可以包含纯虚函数,这些函数没有实现,需要在派生类中进行实现。从抽象类派生出的类必须实现其中的纯虚函数,否则也会被视为抽象类。

接口实现了对象之间的多态性,使得可以通过相同的接口来处理不同类型的对象,增加了代码的可重用性和可扩展性。

如何定义接口(抽象类)?

定义接口时需要将类声明为抽象类,并将所需的函数声明为纯虚函数。

cppCopy Code
class MyInterface { public: virtual void myFunction() = 0; };

在上面的代码中,MyInterface 是一个抽象类,我们定义了一个虚函数 myFunction() 并将其设为纯虚函数。因为这个函数是纯虚函数,所以派生类必须实现它才能被实例化。

如何使用接口(抽象类)?

使用接口时需要先定义一个指向接口的指针或引用,然后将其指向一个实现了该接口的对象。

下面是一个使用接口的例子:

cppCopy Code
#include <iostream> class MyInterface { public: virtual void myFunction() = 0; }; class MyClass : public MyInterface { public: void myFunction() override { std::cout << "This is myFunction() in MyClass." << std::endl; } }; int main() { MyInterface* ptr = new MyClass(); ptr->myFunction(); }

在上面的代码中,我们定义了一个实现了 MyInterface 接口的类 MyClass,并在其中实现了 myFunction() 函数。然后在 main() 函数中,我们定义了一个指向 MyInterface 的指针 ptr,并将其指向了 MyClass 的一个对象。最后通过该指针调用了 myFunction() 函数。

输出结果为:

Copy Code
This is myFunction() in MyClass.

这个例子中展示了如何使用接口实现多态性,我们可以通过一个指向接口的指针来调用不同类型的对象中的同名函数,实现了多种实现方式的可交换性和重用性。