C++中的前向声明

前言:

C++中类必须先定义,才能够实例化。

两个类需要相互引用形成一个“环形”引用时,无法先定义使用。这时候需要用到前向声明

前向声明的类不能实例化。

//前向声明的类,不能实例化一个对象,可以声明指针或引用对象

/*
 * DemoA.h
 *
 *  Created on: Jul 15, 2014
 *      Author: zfs
 */

#ifndef DEMOA_H_
#define DEMOA_H_
#include "DemoB.h"
class DemoA {
public:
	DemoA();
	virtual ~DemoA();
	DemoB demob_;
};

#endif /* DEMOA_H_ */

/*
 * DemoA.cpp
 *
 *  Created on: Jul 15, 2014
 *      Author: zfs
 */

#include "DemoA.h"

DemoA::DemoA() {
	// TODO Auto-generated constructor stub

}

DemoA::~DemoA() {
	// TODO Auto-generated destructor stub
}


/*
 * DemoB.h
 *
 *  Created on: Jul 15, 2014
 *      Author: zfs
 */

#ifndef DEMOB_H_
#define DEMOB_H_
//#include "DemoA.h"
class DemoA;
class DemoB {
public:
	DemoB();
	virtual ~DemoB();
     /*void fun1(DemoA demo){  //error

     }*/
	 void fun1(DemoA& demo){  //

	     }
	 void fun2(DemoA* demo){  //

	 	     }
	DemoA* demoa_; //前向声明的类,不能实例化一个对象,可以声明指针或引用对象
};
#endif /* DEMOB_H_ */

/*
 * DemoB.cpp
 *
 *  Created on: Jul 15, 2014
 *      Author: zfs
 */

#include "DemoB.h"

DemoB::DemoB() {
	// TODO Auto-generated constructor stub

}

DemoB::~DemoB() {
	// TODO Auto-generated destructor stub
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值