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

时间:2016-09-30 21:47:32

标签: c++

此文件是否需要#include来定义FooType?函数的类型签名返回FooType*但函数实现不使用FooType

// test.cpp
class FooType;  // Unresolved forward declaration

FooType* GetFoo() { return nullptr; }

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

1 个答案:

答案 0 :(得分:2)

来自cppreference

  

以下表格的声明

     

class-key attr identifier;

     

声明一个类型   在此范围的后面定义。直到定义出现,这个类   名称不完整。

     

...

     

并且如果特定源文件仅使用指针和引用   这个类可以减少#include依赖。

因此,此语法完全有效,因为您使用指针Foo*

相关问题