C++ 引用的初始化与对象的初始化
我知道动态强制转换对指针和引用有效。 以下两项都是向下浇铸的工作C++ 引用的初始化与对象的初始化,c++,dynamic-cast,C++,Dynamic Cast,我知道动态强制转换对指针和引用有效。 以下两项都是向下浇铸的工作 der d; base& b = d; der x = dynamic_cast<der&>(b); -->A der& y = dynamic_cast<der&>(b); -->B x.method(); y.method(); derd; 基数&b=d; der x=动态(b);-->A. der&y=动态_投射(b);-->B x、 方法(); y、
der d;
base& b = d;
der x = dynamic_cast<der&>(b); -->A
der& y = dynamic_cast<der&>(b); -->B
x.method();
y.method();
derd;
基数&b=d;
der x=动态(b);-->A.
der&y=动态_投射(b);-->B
x、 方法();
y、 方法();
我想知道A和B的区别是什么
der x = dynamic_cast<der&>(b);
der& y = dynamic_cast<der&>(b);
只是初始化一个引用
x.method();
对单独构造的对象调用method()
y.method();
对对象
y
引用调用method()
,即d
从派生转换为基不需要任何强制转换。让我改变一下-我的重点是在引用部分。A和B之间的差异根本不涉及动态强制转换。你是在问值类型和引用之间有什么区别吗?还是错了。如果b
是实际对象,而不是引用,则强制转换将始终抛出。此外,您还混淆了der
与base
和B
与A
,使其非常混乱。您的示例与dynamic\u cast
无关。相应地更改了标题。