如何复制一个基本类型的c++

visual how can I make a copy of a primitive types c++?

本文关键字:c++ 一个 类型 何复制 复制      更新时间:2023-10-16

我想复制一个常量基本类型的值,并赋值给一个引用。我想在不把它放到堆里的情况下这么做,这可能吗?

写一些像这样的东西:

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++中编译)不可能像在示例代码中那样初始化引用。