[英]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.