c++前置声明与头文件引用

本文探讨了C++中的前置声明优缺点,包括节省编译时间、减少依赖和潜在的bug风险。详细解释了前置声明的适用场景,如指针、引用和函数参数,并列举了错误用法示例。同时介绍了Pimpl技巧,用于优化头文件包含,以实现类似前置声明的效果。总结建议,合理利用include以平衡编译效率和代码维护性。
摘要由CSDN通过智能技术生成

优缺点

优点

  1.c++前置声明,可以节约预处理器的展开时间,也就是在编译的时候速度是增快了,但是伴随着很多坑。
  2.当被前置声明的类改动后,只需要编译包含改动类头文件的源文件,所有使用了前置声明的源文件不需要改动

体现

1.所有引用TestB.h 的其他 .cpp文件不用再去包含 tem_A 与 Util 这俩个类的头文件,这俩个类的文件TestB.cpp 会包含。其他的.cpp 文件只需链接TestB.o 文件即可。这样有多少个使用到Test_B的源文件就会省多少次相应的头文件展开。
2. 如果Util 与 tem_A 的头文件发生变化,只需要Test_B 重新编译即可,其他用到Test_B的源文件不需要重新编译,只需链接新的Test_B.o 即可。

#ifndef TEST_B_H
#define TEST_B_H

template<class T>
class tem_A;

class Util;

class B { 
 public:
  B() 
  {}  

 private:
  tem_A<Util>* handle;
};

#endif //TESTB_H

缺点

1.可能引发bug

struct B {};
struct D : B {};

// good_user.cc:
#include "b.h"
void f(B*);
void f(void*);
void test(D* x) { f(x); }  // calls f(B*)

//good_user.cc:
struct D;
void f(B*);
void f(void*);
void test(D*x)
{
     f(x); //
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值