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
- objective-c 交叉引用问题的解决方案
- c++23、C++中类的交叉引用
- Word控件Spire.Doc 教程:用C#,VB.NET在Word中创建对书签的交叉引用
- C++Builder 中 Mapx 的对象引用
- C中数组的另类引用
- C中数组的另类引用
- C# 中引用vb编写的DLL
- Objective C 中NSNumber的引用计数
- 关于C中指针的引用*&
- C中指针与引用的区别
- C中引用重名的全局变量
- C++/C++11中引用的使用
- C语言中引用的用法
- c中指针与引用的区别
- C++ 中引用C extern "C" 的用法
- 【总结】C++、C#、Java、Javascript、Python中引用的区别
- c++:类中成员变量是引用
- 如何给ida增加objective-c交叉引用
- 适配器模式
- php设计模式之单例模式
- Android 之摇一摇录音(加速度传感器)
- SpringMVC处理请求流程(转载)
- iOS之 多线程的深入探究
- c++23、C++中类的交叉引用
- ABAP 读取文件 GUI_UPLOAD
- C语言assert
- :?的陷阱
- Python修改文件内容
- leetcode Super Pow
- ARM Linux BackTrace
- 面试题51:数组中重复的数字
- java学习之路 之 基本语法-程序流程控制-循环结构-for 循环练习题