社区
C++ 语言
帖子详情
前向声明为什么一定要是指针呢
xuegao007
2008-02-22 10:00:07
#include <iostream.h>
class B;
class A
{
public:
protected:
B b; //这样写为什么不行,变成B* b 就可以了。why?
};
class B
{
public:
protected:
A a; //这里是没问题的。
};
void main()
{
}
...全文
80
3
打赏
收藏
前向声明为什么一定要是指针呢
#include class B; class A { public: protected: B b;//这样写为什么不行,变成B* b 就可以了。why? }; class B { public: protected: A a;//这里是没问题的。 }; void main() { }
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chengzhe
2008-02-22
打赏
举报
回复
楼上正解,不知道大小 无法分配空间
tjltail
2008-02-22
打赏
举报
回复
这个问题是这样的
在B还没有定义前,你不知道b的大小,编译器在编译A的时候没有办法知道A的大小,编译当然会有问题
而是指针就不同了,编译器中指针的大小是一定的,不管你的类型,取指针大小就可以了.
而在b中a的对象是没有问题的,a的大小根据前面的定义就可以知道了,所以没有问题.
ltc_mouse
2008-02-22
打赏
举报
回复
前向声明后,B还属于不完全类型,编译器只是知道B是class类型的,但这个class具体有哪些属性,无法知道;尝试定义B b是不合理的(要定义,需要知道它的大小,但现在却不知道...);但B* b没有问题,在一个系统中,指针变量占用的存储空间是一样的,既然我知道了B是class类型,那么B*就是有效的指针类型,从而它的存储空间已知,定义可以成立~
C/C++
指针
的13份资料
C/C++
指针
的13份资料 内容丰富,让编程人员不再害怕
指针
C/C++
指针
经典资料大全
C/C++
指针
经典资料大全,十余部经典资料书籍,是您精通C
指针
的理想教程。
C语言:
指针
1:
指针
的
声明
以及复杂
声明
语法(一个C语言小白的理解之旅)
一. 什么是
指针
?如何定义
指针
?
指针
是一个变量,其值为另一个变量的地址(内存位置的直接地址)。就像其他变量或常量一样,我们必须在使用
指针
存储其他变量地址之前,对其进行
声明
。 定义
指针
的一般类型为: <类型> <变量标识符>,<变量标识符>,…; 需要注意的是: 对于32位操作系统,内存地址大小是4个字节,
指针
变量的大小也需要4 个字节。 对于64位操作系统,内存地址大小是8个字节,
指针
变量的大小也需要8个字节。 二. 如何对
指针
变量进行
声明
? 1.
声明
简单的
指针
变量
C++ 函数
指针
的
声明
与使用
C++函数
指针
一 函数
指针
是什么 1.函数
指针
是
指针
函数
指针
也是
指针
的一种,是
指针
的子集,所以它应该有
指针
的一些特性; 函数
指针
也附带了函数的一些特性。 2.函数
指针
该如何
声明
? 我们可以和int类型的
指针
的
声明
进行比对一下:
声明
一个int型
指针
: int *p ;
声明
一个函数型(假如是一个有两个int类型的参数以及一个 int类型的返回值)的
指针
: int (*pFunc)(int, int); 我们把
指针
名称提出来看一下, 整形
指针
函数
指针
int * int (*)(
理解C语言中
指针
的
声明
以及复杂
声明
的语法
昨天刚把《C程序设计语言》中“
指针
与数组”章节读完,终于把心中的疑惑彻底解开了。现在记录下我对
指针
声明
的理解,顺便说下如何在C语言中创建复杂
声明
以及读懂复杂
声明
。
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章