Linux C++中多态的实现方式
导读:在C++中,多态主要通过虚函数(virtual functions)和抽象类(abstract classes)来实现。多态允许我们使用基类的指针或引用来调用派生类的成员函数,从而实现动态绑定。以下是实现多态的两种主要方式: 虚函数(Vi...
在C++中,多态主要通过虚函数(virtual functions)和抽象类(abstract classes)来实现。多态允许我们使用基类的指针或引用来调用派生类的成员函数,从而实现动态绑定。以下是实现多态的两种主要方式:
- 虚函数(Virtual Functions)
虚函数是在基类中使用关键字virtual声明的成员函数。当派生类继承基类时,可以重写(override)这些虚函数。当使用基类的指针或引用调用这些虚函数时,将调用实际对象的虚函数,而不是基类的虚函数。这就是动态绑定。
示例:
#include <
iostream>
class Base {
public:
virtual void print() {
std::cout <
<
"Base class print function" <
<
std::endl;
}
}
;
class Derived : public Base {
public:
void print() override {
// 重写基类的虚函数
std::cout <
<
"Derived class print function" <
<
std::endl;
}
}
;
int main() {
Base *basePtr;
Derived derivedObj;
basePtr = &
derivedObj;
basePtr->
print();
// 输出 "Derived class print function",而不是 "Base class print function"
return 0;
}
- 抽象类(Abstract Classes)
抽象类是不能实例化的类,通常用于定义接口。抽象类可以包含纯虚函数(pure virtual functions),这些函数没有实现,必须在派生类中实现。当一个类包含至少一个纯虚函数时,该类成为抽象类。
示例:
#include <
iostream>
class AbstractBase {
public:
virtual void print() = 0;
// 纯虚函数,没有实现
}
;
class Derived : public AbstractBase {
public:
void print() override {
std::cout <
<
"Derived class print function" <
<
std::endl;
}
}
;
int main() {
AbstractBase *abstractBasePtr;
Derived derivedObj;
abstractBasePtr = &
derivedObj;
abstractBasePtr->
print();
// 输出 "Derived class print function"
return 0;
}
总之,在C++中,多态主要通过虚函数和抽象类来实现。虚函数允许我们在运行时动态绑定函数调用,而抽象类则用于定义接口。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux C++中多态的实现方式
本文地址: https://pptw.com/jishu/755274.html
