欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 【C++】前向声明(Forward Declaration)

【C++】前向声明(Forward Declaration)

2025/4/17 7:21:01 来源:https://blog.csdn.net/songhuangong123/article/details/147232084  浏览:    关键词:【C++】前向声明(Forward Declaration)

前向声明(Forward Declaration)是在C、C++等编程语言中,在使用一个类、结构体或其他类型之前,仅声明其名称而不给出完整定义的一种方式。

作用

  1. 减少编译依赖:当一个源文件包含大量头文件时,编译时间会显著增加。使用前向声明,只需让编译器知道某个类型的名字存在,而不必包含其完整定义的头文件。例如在代码中如果仅需要使用指针或引用指向某个类,而不需要访问该类的成员,就可以用前向声明,避免包含该类完整定义的头文件,从而减少编译时需要处理的代码量,加快编译速度。
  2. 避免头文件循环包含:在多个类相互引用时,容易出现头文件循环包含问题(例如A类头文件包含B类头文件,B类头文件又包含A类头文件),这会导致编译错误。前向声明可以打破这种循环依赖,在不需要完整类定义的地方,使用前向声明来表示类的存在,解决循环包含问题。

示例

在C++中:

// 前置声明类B
class B; class A {
public:// 这里仅使用B*指针,不需要B的完整定义void doSomething(B* b); 
}; // 类B的完整定义
class B {
public:void someFunction();
}; void A::doSomething(B* b) {// 这里只是简单使用指针,没有访问B的成员// 如果要访问B的成员,就需要包含B的完整定义
} 

在上述代码中,class B; 就是前向声明,在定义 A 类时,不需要包含 B 类的完整定义,仅告知编译器 B 类是存在的,就可以使用指向 B 类对象的指针。


QT中的例子

比如在QT的一个头文件中,我这里不想把include写到头文件中,所以这里用到了前向声明,然后再.C文件中再引用头文件:
在这里插入图片描述
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词