c++ 中的 (Parent &)child 和 (Parent)child 之间的类型转换有什么不同吗?
Is there any difference typecasting between (Parent&)child and (Parent)child in c++?
我刚刚实现了一个函数,当一个变量被类型化为 (Parent)child
时,我发现有一个错误(类型错误)。但是当它被类型转换为 (Parent&)child
时,错误得到修复。然后我检查了类型转换的变量类型,两者都是相同的类型。有区别还是可能只是因为我的代码?
提前致谢:)
是的,有区别。转换为一个对象会产生一个新的纯右值。转换为引用会产生一个引用基础子对象的左值。
P.S。更喜欢使用 C++ 样式转换 (static_cast
) 而不是 C 样式转换。
我刚刚实现了一个函数,当一个变量被类型化为 (Parent)child
时,我发现有一个错误(类型错误)。但是当它被类型转换为 (Parent&)child
时,错误得到修复。然后我检查了类型转换的变量类型,两者都是相同的类型。有区别还是可能只是因为我的代码?
提前致谢:)
是的,有区别。转换为一个对象会产生一个新的纯右值。转换为引用会产生一个引用基础子对象的左值。
P.S。更喜欢使用 C++ 样式转换 (static_cast
) 而不是 C 样式转换。