C++ 抽象类能前向声明么
时间: 2023-10-12 16:20:30 浏览: 95
可以。在使用抽象类时,我们通常会定义一个指向该抽象类的指针或引用,而不是直接创建该抽象类的对象。因此,在使用抽象类时,只需要前向声明该类即可,而不需要知道该类的具体实现细节。
例如:
```c++
// 前向声明抽象类
class AbstractClass;
// 使用指向抽象类的指针
void func(AbstractClass* ptr);
// 定义抽象类
class AbstractClass {
public:
// 纯虚函数
virtual void func() = 0;
};
// 实现抽象类
class ConcreteClass : public AbstractClass {
public:
void func() override {
// 具体实现
}
};
// 使用抽象类的指针
void func(AbstractClass* ptr) {
ptr->func();
}
int main() {
ConcreteClass c;
func(&c); // 通过指向抽象类的指针来调用具体实现
return 0;
}
```
在上面的代码中,我们定义了一个抽象类 `AbstractClass`,并在其中定义了一个纯虚函数 `func()`。然后,我们又定义了一个具体类 `ConcreteClass`,继承自抽象类 `AbstractClass`,并实现了 `func()` 函数。在 `func()` 函数中,我们接收一个指向抽象类的指针,并调用了该指针所指向对象的 `func()` 函数。在 `main()` 函数中,我们创建了一个 `ConcreteClass` 对象,并将其地址传给 `func()` 函数,从而调用了具体实现。
阅读全文