如何复制一个基本类型的c++
visual how can I make a copy of a primitive types c++?
我想复制一个常量基本类型的值,并赋值给一个引用。我想在不把它放到堆里的情况下这么做,这可能吗?
写一些像这样的东西:
const unsigned long rawnan[2]={0xffffffff, 0x7fffffff};
const double NaN = *( double* )rawnan;
Class{
float &_f;
inline Class( ):_f(float(NaN)){
}
}
and I want know if when:
Class{
float &_f;
inline Class( float F):_f(float(F)){
}
}
如果我实际上复制了变量F或不(我知道可以直接引用F,但我认为它的作用域将在构造函数的末尾结束),那么我需要复制它的值。
(如果代码不能编译,那是因为是伪代码从一个真正的代码,根本的问题是重要的,我希望是可以理解的)
(我这样做NaN的定义,因为这是迄今为止我所知道的最好的方法,并且与vc++和g++兼容)
方法:
float first = 3.14159265358979324f;
float second = first;
这两段代码都不对。
float(NaN)
和float(F)
是临时对象。将它们绑定到引用数据成员_f
,但这不会延长它们的生命周期。因此,当您开始使用参考_f
时,它将悬空。
如果你想获取float
的副本,使用float
数据成员,而不是float&
。如果需要引用数据成员,必须确保它引用的对象在使用引用时仍然存在。
如果代码不能编译,那是因为它是来自真实代码的伪代码
正确的处理方法是写一个简短的完整的程序,包括你想问的代码,检查它是否编译,然后问一个关于你的完整程序的问题。你发布的代码至少有两个编译问题。您的实际代码(如果它在g++中编译)不可能像在示例代码中那样初始化引用。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 运行同一解决方案的另一个项目的项目
- 挂起和取消挂起一个文件DLL
- 用C++中的一个变量定义一个常量
- 函数向量_指针有不同的原型,我可以构建一个吗
- 在c++中用vector填充一个简单的动态数组
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 预处理器:插入结构名称中的前一个行号
- 我在c++代码中生成了一个运行时#3异常
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 从链接列表c++中删除一个项目
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '