c++23、C++中类的交叉引用

来源:互联网 发布:编程中什么是栈 编辑:程序博客网 时间:2024/05/17 23:37

首先我们知道所谓交叉引用,就是两个类中,分别包含对象的对象。C++中关于交叉引用,和常见的现象。

其次如果在同一个文件内,两个类的交叉引用,我们知道使用的前置声明的方式。如:


输出结果如下:


按说我们其实想的是,每一个输出的都是  

this is *

puts *

为什么会在类B对象ta中输出"this is A!" ,原因就在于A被完全实例化了。而类A的对象tb,输出如所想,就在于tb中的*b是个指针,并未完全实例化成类B的对象。如果把类B中的A对象改成,*a,输出就会正常。

好了,到这里我们基本明白一个文件中两个类得交叉引用。那如果两个类都比较大,分别位于两个文件中,交叉拥有又该如何呢?

答案是两者分别包含对方的头文件,并给出前置声明。形式如下:

a.h:


b.h:


main.cpp


输出结果如下:


至此我们可以清楚地得出一个结论:

类得交叉引用,如果是指针的话,完全是没问题的。因为所有指针占用的空间都是一样的,而且声明指向不完全类型的指针是合法的,因为不需要知道被指向的类的更多信息了。但是如果使用对象,就需要注意了。因为如果两个类中都是用完全实例化,是无法编译通过的,因为,两个类如论预编译,都会有一个在另一个后面声明,就造成类型不明确的问题。但是只实例化其中的一个,另一个指针是可以的。

0 0
原创粉丝点击