簡體   English   中英

C ++和CONST:如何在FLAG的typedef位置使用UINT32並使用CONST FLAG標志; 內部結構?ong

[英]C++ and CONST: How to use UINT32 in the typedef place of FLAG and use CONST FLAG flag; inside the structure?ong

我是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&,則表示行為正常。

請幫助我理解以上內容。

提前致謝。

CONST不是C ++的一部分,我想它是某種宏。

FLAG & flag;

將創建對標記對象的引用。 沒有進一步的信息,代碼的確切含​​義是不可能說的。

flagconst成員,因此除非涉及到強制類型轉換,否則只能將其初始化而不分配給它。 您得到什么結果取決於您使用它初始化的內容,而不會顯示出來。

flag是一個引用( & ),因此它不保留自己的值,而是保留其他位置的值。 引用只是另一個變量的另一個名稱(如果是const ref,則可能是一個值)。 例如,如果您使用名為i的變量對其進行初始化,則它是i的另一個名稱。 如果i的值更改,則flag的值更改。 const表示x中沒有任何東西可以直接修改它,而不是值不可能被修改。 同樣,由於沒有關於您正在執行的初始化的信息,因此無法解釋發生了什么。

您確實提到過使用FLAGFLAG &獲得不同的結果,這表明您正在使用變量對其進行初始化,然后該變量被更改。 給定更多上下文,我們可以提供更多細節。

現在,如果您提供了實際的代碼,則UINT16UINT32之間沒有區別,因為您已將它們都定義為unsigned short 行為上不應有差異。 如果存在,則意味着您不僅提供的代碼不足以了解正在發生的情況,而且還提供的代碼與實際獲取結果的方式不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM