因为引用类型的成员变量定义时需要赋值,不然其所在的类初始化时有编译错误,所以一直以为不能使用引用类型的变量作为成员变量。但在探讨C++的前置声明知识时,发现是可以定义引用类型的成员变量的。

如下讲解一下如何使用引用类型的成员变量。
//AAA.h
#pragma once
class BBB;
class AAA
{
public:
AAA(BBB &x);
~AAA();
private:
BBB &b;
};
#include "AAA.h"
AAA::AAA(BBB &x) : b(x)
{
}
AAA::~AAA(void)
{
}
//BBB.h
#pragma once
class AAA;
class BBB
{
public:
BBB(void);
~BBB(void);
void NewAAA();
private:
AAA *a;
};
//BBB.cpp
#include "BBB.h"
#include "AAA.h"
BBB::BBB()
{
NewAAA();
}
BBB::~BBB(void)
{
}
void BBB::NewAAA()
{
BBB b;
a = new AAA( b );
}
//main.cpp
#include
int main()
{
return 0;
} 如上程序所示,在AAA的头文件中定义了引用类型的成员变量,在AAA的构造函数初始化列表中对其进行了初始化,达到了“使用引用类型的成员变量”的目的。
注意,引用类型的成员变量的初始化必须在构造函数的初始化列表中进行初始化。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。