引用型的静态/动态类型是什么?
假设存在下面代码,选项中说法正确的是:class A{/*略*/:
class B:public A{/*略*/;
B*pb;
/*其它代码,略*/
A*pobj=pb;
A&robj=*pb;
A aobj=*pb;
A pobj的静态类型是A*,动态类型是B
B robj的静态类型是A&,动态类型是B
C aobj的静态类型是A,动态类型是不确定的
D 以上都不对
见B选项,robj是A&型,请问这个robj的静态/动态类型是什么? A选项对的 jhanker 发表于 2022-4-30 14:05
A选项对的
A选项中,pobj的动态类型是B*型,故A选项错误 本帖最后由 jhanker 于 2022-4-30 16:37 编辑
GeraldIAD 发表于 2022-4-30 15:53
A选项中,pobj的动态类型是B*型,故A选项错误
对应该是B*
*pb是指向B的, robj是引用,静态类型是 A&,但引用的内容是B
本帖最后由 GeraldIAD 于 2022-5-1 14:02 编辑
jhanker 发表于 2022-4-30 16:33
对应该是B*
*pb是指向B的, robj是引用,静态类型是 A&,但引用的内容是B
重新测试了一下,跟原来说的不太符合,我列在下面:
pobj静态类型为 A* 动态类型为 B*
robj静态类型为 A 动态类型为 B
aobj静态类型为 A 动态类型是 A
本帖最后由 jhanker 于 2022-5-2 21:31 编辑
GeraldIAD 发表于 2022-5-1 13:46
重新测试了一下,跟原来说的不太符合,我列在下面:
pobj静态类型为 A* 动态类型为 B*
robj静态类型 ...
A&的意思就是A是引用类型其实,也可以说成是B的别名,编译后的实现是和指向B的指针类似
ABC三项前半句应该没问题 A* A& A 分别是A是指针 A是引用 A是一般类型变量 ,在A&=B的情况下 赋值和一般变量一样 B=3;与A=3等价 而不写成 A&=3
页:
[1]