C++知识分享:前置声明及其解析

本文探讨了C++中的前置声明,包括其在变量、函数和类声明中的应用,以及解决循环依赖问题的重要性。前置声明可以避免重复定义、减少编译依赖并解决循环依赖,尤其是在配合指针使用时。文章还对比了C++与其他语言处理循环引用的差异,并强调了正确使用前置声明和管理头文件包含的重要性。
摘要由CSDN通过智能技术生成

前置声明是C/C++开发中比较常用的技巧,主要用在三种情形:

变量/常量,例如extern int var1;;

函数,例如void foo();,注意类的成员函数无法单独做前置声明;

类,例如class Foo;,也可以前置声明模板类:template class<typename T1, int SIZE>Foo;。如果类包含在名字空间中,需在名字空间内做前置声明:namespace tlanyan {class Foo;};,而不能这样:class tlanyan::Foo;。

前置声明作用

根据其用途,前置声明的主要作用为:

(1)避免重复定义变量;

(2)避免引入函数定义/声明文件,从而函数文件发生更改时不会重新编译依赖文件;

(3)解决循环依赖问题。

前两种用途好理解,第三种稍微复杂点,但却是前置声明最重要的用途。其解决类A包含类B,同时类B包含类A的依赖问题。循环依赖一般是设计层面的问题,可通过接口、引入辅助类等手段化解。前置声明也能解决,只是架构上稍微别扭。

不管A和B是否定义在同一个文件中,c++永远无法解决如下形式的循环依赖(后文解释原因):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值