返回但不使用该类型的 C++ 函数是否需要 #include 该类型?

Does a C++ function that returns, but doesn't use, a type need to #include that type?

本文关键字:类型 是否 #include 函数 返回 C++      更新时间:2023-10-16

这个文件需要一个#include来定义FooType吗?函数的类型签名返回FooType*,但函数实现不使用FooType

// test.cpp
class FooType;  // Unresolved forward declaration
FooType* GetFoo() { return nullptr; }

使用g++ --std=c++11 -Wall构建时没有警告。那么,这是向前声明的合法用法吗?

From cppreference:

下列形式的声明

声明一个类类型稍后将在本范围中定义。在定义出现之前,这个类名称类型不完整。

,如果一个特定的源文件只使用指针和引用类,这使得减少#include依赖成为可能。

所以这个语法是完全有效的,因为你使用了一个指针Foo*