我知道动态强制转换适用于指针和引用。 以下两项工作都向下推进
der d;
base& b = d;
der x = dynamic_cast<der&>(b); -->A
der& y = dynamic_cast<der&>(b); -->B
x.method();
y.method();
我想知道A和B之间的区别
答案 0 :(得分:2)
该行
der x = dynamic_cast<der&>(b);
构造一个der
类型的对象,并使用dynamic_cast<der&>(b)
该行
der& y = dynamic_cast<der&>(b);
只是初始化参考。
x.method();
在单独构造的对象上调用method()
。
y.method();
在对象method()
引用上调用y
,即d
。