如果您有一个整型t1和一个函数通过引用获得可能较小的整型t2,调用函数((t2)var_t1)会有问题吗?通过引用传递的整型类型
回答
当且仅当该功能拿了const引用,在这种情况下,由投产生的t2
临时可以绑定到这将是罚款,强制转换为t2
。
既然这样会导致整数类型的引用的目的,我会假定引用是非常量的,所以答案是:是的,这是有问题的。要清楚的是,如果您投射到t2
,它甚至不会编译。
如果你想function
修改t1
变量只有部分,在参考/指针使用reinterpret_cast
。当然,这在理论上会调用未定义的行为。
只要记住,这种行为的不确定性在大端平台上不是那么理论化,它会修改变量的错误部分。真正的大端平台正在变得越来越稀少,但它们绝对不会绝迹。 – 2011-05-02 11:42:16
确实如此,但它在Big Endian上与Little Endian中的未定义一样。但是如果目标架构是已知的,那么结果应该是可以预测的,这就是我所说的'理论'。当然,这并没有让它变得更好...... – 2011-05-02 11:46:15
投射会创建一个临时的,如果较小的类型不采用const
参考,您的代码将不会编译,因为暂时不能绑定到非常量引用。
如果确实需要const
参考,那么它会进行编译,但是可能会导致溢出,这是将较大数据类型转换为较小数据类型时的常见问题。
函数将不得不采取const
引用,否则它不会编译。
由于您还标记了问题C,在这种情况下,“通过引用”意味着使用指针,因此无法将&
运算符应用于演员表的结果。但是,你可以使用:
function((t2 [1]){ (t2)var });
注意,是有效C,但不是C++,你不应该混合C和C++代码的原因之一......
- 1. 通过层传递类型
- 2. 通过引用传递'值类型'参考 - 内存占用
- 3. 强制引用类型传递值(或.Clone()通过)
- 4. 如何通过值传递引用类型?
- 5. 如何通过引用传递基元数据类型?
- 6. 通过UDP传递结构弱类型
- 7. 通过完整引用传递变量
- 8. 通过引用传递整数
- 9. 通过WCF服务传递指定的泛型类型
- 10. 通过引用传递父级PHP类
- 11. .NET如何通过引用传递类?
- 12. C++类只能通过引用传递
- 13. 通过引用传递与值传递
- 14. PHP中的原始数据类型是否通过引用传递?
- 15. 传递泛型类型
- 16. MVC3 - 我如何通过RedirectToAction传递模型引用
- 17. Backbone.js:通过引用将模型传递给子视图
- 18. 通过引用传递流
- 19. 通过引用传递LPCWSTR
- 20. C++通过引用传递?
- 21. 传递值或通过引用获取基本数据类型会更好吗?
- 22. 类型不匹配时传递的整数结果为整数变量类型
- 23. 通过引用传递引用?
- 24. 传递整型阵列构造通过参考
- 25. Java是通过值传递还是通过引用传递?
- 26. 重构通过传递泛型方法
- 27. 如何通过传递值输入型
- 28. 如何通过ActionLink传递模型值
- 29. MVC4传递模型通过Ajax.BeginForm
- 30. 传递约束泛型类型,以非通用方法
C++和C是不同的语言。我已经删除了C标签。 – 2011-05-02 14:47:57