C ++和CONST:如何在FLAG的typedef位置使用UINT32并使用CONST FLAG标志;在结构内部?

时间:2010-08-02 10:47:11

标签: c++ type-conversion constants

我是C ++编程的新手。我正在分析代码,我发现了以下内容:

typedef unsigned short UINT16;
typedef unsigned long UINT32;
typedef UNIT16 FLAG;

//within a structure,
struct x
{
      const FLAG& flag; //what this means??
};

当我将FLAG数据类型更改为UNIT32时,则FLAG&正在回归其他一些价值我猜。如果我使用FLAG而不是FLAG&amp ;,那么它的表现正常。

请帮助我理解上述内容。

提前致谢。

2 个答案:

答案 0 :(得分:0)

CONST不是C ++的一部分,我猜它是某种宏。

FLAG & flag;

将创建对标志对象的引用。如果没有进一步的信息,代码的意思/做法正是如此。

答案 1 :(得分:0)

flagconst成员,因此只能初始化,不能分配给它,除非涉及演员表。你得到什么结果取决于你初始化它,你没有显示。

flag是一个引用(&),因此它不保留自己的值,而是保存其他地方的值。引用只是另一个变量的不同名称(或者可能是值,如果它是const ref)。例如,如果使用名为i的变量对其进行初始化,那么它就是i的另一个名称。如果i的值发生变化,则flag的值会发生变化。 const表示x中没有任何内容可以直接修改它,而不是可能无法修改该值。同样,如果没有关于你正在进行的初始化的信息,就不可能解释发生了什么。

您确实提到您使用FLAGFLAG &获得了不同的结果,这表明您正在使用变量对其进行初始化,然后变量会发生变化。鉴于更多背景,我们可以提供更多细节。

现在,如果您提供了实际代码,则UINT16UINT32之间没有区别,因为您已将它们定义为unsigned short。行为应该没有区别。如果有,这意味着您不仅要提供足够的代码来了解正在发生的事情,还要提供与您实际获得结果的代码不同的代码。