qt中的虚函数、纯虚函数
阅读数:125 评论数:0
跳转到新版页面分类
C/C++
正文
一、虚函数
在Qt中,虚函数的写法和标准C++中的写法是一样的。虚函数允许在派生类中进行函数重写(override),是实现多态的基础。
1、定义虚函数:
在基类中,你需要使用virtual
关键字来声明一个虚函数。这表明该函数可以在任何派生类中被重写。
// Base class
class BaseClass {
public:
virtual void virtualFunction() {
// 基类的实现
}
};
2、重写虚函数:
在派生类中,你可以重写基类中定义的虚函数。从C++11开始,你可以(并且建议)使用override
关键字来明确指出函数是一个重写。
// Derived class
class DerivedClass : public BaseClass {
public:
void virtualFunction() override {
// 派生类的实现
}
};
二、纯虚函数
在C++和Qt中,抽象函数(也称为纯虚函数)是一种必须在派生类中实现的虚函数。如果一个类包含至少一个纯虚函数,那么它就是一个抽象类,不能被实例化。在Qt中,抽象函数的声明和标准C++中的声明方式相同。
要声明一个纯虚函数,你需要在函数声明的末尾添加= 0
。这表明没有为该函数提供定义,派生类需要提供具体实现。
1、声明抽象函数:
在基类中声明一个或多个纯虚函数。
// Base class
class AbstractClass {
public:
virtual void abstractFunction() = 0; // 纯虚函数声明
virtual ~AbstractClass() {} // 提供一个虚析构函数
};
2、实现抽象函数:
在派生类中实现基类中声明的纯虚函数。
// Derived class
class ConcreteClass : public AbstractClass {
public:
void abstractFunction() override { // 实现纯虚函数
// 派生类的具体实现
}
};