转换指针和引用的好处

Casting a pointer and a reference benefits?

本文关键字:引用 指针 转换      更新时间:2023-10-16

假设我有以下两个语句

base* b = ...;
fnl * c = dynamic_cast<fnl*>(b); //Statement A
fnl& d = dynamic_cast<fnl&>(*b); //Statement B

我想知道表述A和表述B的区别是什么。我理解语句A强制转换并返回一个指针,而语句B返回一个引用。在A的情况下,是由用户来释放c的内存吗?

如果强制转换失败,第一次调用将返回NULL。第二次调用将抛出异常。

没有任何额外的分配,所以没有什么可以释放的。也就是说,现在只有一个对象被3个变量引用。你只能释放它一次。从技术上讲,使用哪个变量并不重要,但为了合理起见,请尽量避免混淆。