簡體   English   中英

指向const成員變量的指針

[英]Pointer to a const member variable

我想知道指向常量成員變量的指針的語法是什么。

我知道指向非const成員函數的指針和指向const成員函數的指針是明顯不同的類型,即以下是兩種不同的類型:

typedef void (Foo::*Bar)(void);
typedef void (Foo::*ConstBar)(void) const;

我想知道是否可以說非指向const和const成員變量的指針,即以下兩種不同的類型,如果是這樣,后者的語法是什么:

typedef int (Foo::*var);
typedef int (Foo::*constVar) const; // Not the correct syntax.

謝謝。

指向成員的指針類型需要與成員的類型匹配:

typedef       int (Foo::*var);  // pointer to a data member of type 'int'
typedef const int (Foo::*cvar); // pointer to a data member of type 'const int'

成員函數的const限定是其類型的一部分,就像返回類型是其類型的一部分一樣。

只是為了讓它更有趣:

typedef const int (Foo::*(Foo::*ConstBar)(void) const);

ConstBar是一個指向const-member函數的指針,該函數不帶參數並返回指向int類型的const-member的指針。

關於如何記住問題語法的一般提示:您只需按照定義類成員的方式編寫它

void name(void) const; // const function
const int name; // const member

然后用(Foo::*name)替換name ,結果是:

void (Foo::*name)(void) const; // pointer to const function
const int (Foo::*name); // pointer to const member

暫無
暫無

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

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