首页 新闻 会员 周边

类的数据成员

0
[待解决问题]

为什么定义类的数据成员时只有其他类的对象才可以作为该类的成员,而自身类的对象不可以作为自身类的成员存在?为什么自身类的指针又可以了

C++
harryy的主页 harryy | 菜鸟二级 | 园豆:202
提问于:2020-01-22 09:00
< >
分享
所有回答(5)
0

成员变量,成员变量,本质上是变量,不是数据类型。建议你好好去看看书吧

佚名12 | 园豆:205 (菜鸟二级) | 2020-01-22 11:06
0

你能够用父类子类来实现这个啊,关键是要单一化,不能自身定义吧。。。

lzhdim | 园豆:642 (小虾三级) | 2020-01-24 18:13
2

类中的成员包含自己,就需要无穷的内存,比如类的名称叫A,那么A中有对象A,A中的A又要有A,这样会无限循环下去的,跟函数中没有其他代码而只是调用自己递归是一个道理

fenggwsx | 园豆:269 (菜鸟二级) | 2020-07-10 16:34
1

class A {
private:
A* a = nullptr;
}
`A* a 这种a就是一个指针,在64位机器上就是一个8字节的指针,这里要理解,在一个系统上不管是什么指针,大小都是固定的。比如A类指针,B类指针,C类指针实际上是大小都一样。

class A{
private:
A a;
}
这种应该是错误的,这个就是先有鸡还是先有蛋,A a实际上是要调用的A的构造函数,而编译没有不知道A具体类型,需要多大的空间就会报这样的错误error: field ‘a’ has incomplete type ‘A’。
经常has-a是在装饰者模式之类的设计模式,避免继承爆炸的问题存在的。

cyssmile | 园豆:154 (初学一级) | 2020-11-27 17:54
0

*A是指针,大小是固定的,所以可以。
而A的大小未知,因此不可以。(这样A包含另一个A就是无限递归了)

计算机知识杂谈 | 园豆:470 (菜鸟二级) | 2021-08-11 15:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册