C++填坑:前向声明

学习的过程中无意间看到前向声明的用法,在这之前开发项目过程中出现过由于模块太多,不同.h相互包含导致的各种问题,使用前向声明可以一定程度上减少出现由于头文件重复包含的问题,特此记录

详解

前向声明就是提前声明类,但不去定义它,可以使用该类的指针或引用。声明的类是一个不完全类型(有声明没定义,找不到任何成员函数和成员变量),因此在使用上会有限制。

class ForwardDeclare//前向声明一个类

(1)不能定义ForwardDeclare类的对象。

(2)可以用于定义指向这个类型的指针或引用。(很有价值的东西)

void fun(ForwardDeclare& test, int a) //可以使用引用或指针

(3)用于声明(不是定义)使用该类型作为形参或者返回类型的函数。

好处

  • 减少头文件的inlcude,节省编译的时间
  • 减少由于两个类之间存在耦合而导致的相互使用冲突

举例

//A.h
class A {
public:
	A();
	~A();
}

//B.h
class A; //前向声明
class B {
public:
	B();
	~B();
	void fun(A* test, int a);	//使用A的指针
}

//错误使用方法
class A;
class B {
public:
	B();
	~B() 
private:
	A instance;	//无法实例化对象
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值