共用方式為


成員指標運算子:。 1 和-> 1

expression .* expression
expression –>* expression

備註

成員指標運算子。 * 和-> *,傳回指定運算式的左邊的物件為特定的類別成員的值。 右邊則必須指定類別的成員。 下列範例會示範如何使用這些運算子:

// expre_Expressions_with_Pointer_Member_Operators.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;

class Testpm {
public:
   void m_func1() { cout << "m_func1\n"; }
   int m_num;
};

// Define derived types pmfn and pmd.
// These types are pointers to members m_func1() and
// m_num, respectively.
void (Testpm::*pmfn)() = &Testpm::m_func1;
int Testpm::*pmd = &Testpm::m_num;

int main() {
   Testpm ATestpm;
   Testpm *pTestpm = new Testpm;

// Access the member function
   (ATestpm.*pmfn)();
   (pTestpm->*pmfn)();   // Parentheses required since * binds
                        // less tightly than the function call.

// Access the member data
   ATestpm.*pmd = 1;
   pTestpm->*pmd = 2;

   cout  << ATestpm.*pmd << endl
         << pTestpm->*pmd << endl;
   delete pTestpm;
}

Output

m_func1
m_func1
1
2

在上述範例中,變數的指標,該成員, pmfn,用來叫用成員函式m_func1。 另一個指標給成員, pmd,用來存取m_num成員。

二元運算子。 * 結合了第一個運算元,必須是類別型別的物件與第二個運算元必須是成員指標型別。

二元運算子-> * 結合了第一個運算元,必須是變數的指標,類別型別的物件與第二個運算元必須是成員指標型別。

在包含運算式。 * 運算子的第一個運算元必須是類別的型別,和前來指標以指定在第二個運算元,或是可存取的型別明確衍生的且可以存取該類別的成員。

在包含運算式-> * 運算子,第一個運算元必須是型別 」 類別型別 」 型別的指標控制台中,第二個運算元,或它必須型別的明確衍生自該類別。

範例

請考慮下列的類別和程式片段:

// expre_Expressions_with_Pointer_Member_Operators2.cpp
// C2440 expected
class BaseClass {
public:
   BaseClass(); // Base class constructor.
   void Func1();
};

// Declare a pointer to member function Func1.
void (BaseClass::*pmfnFunc1)() = &BaseClass::Func1;

class Derived : public BaseClass {
public:
   Derived();  // Derived class constructor.
   void Func2();
};

// Declare a pointer to member function Func2.
void (Derived::*pmfnFunc2)() = &Derived::Func2;

int main() {
   BaseClass ABase;
   Derived ADerived;

   (ABase.*pmfnFunc1)();   // OK: defined for BaseClass.
   (ABase.*pmfnFunc2)();   // Error: cannot use base class to
                           // access pointers to members of
                           // derived classes. 

   (ADerived.*pmfnFunc1)();   // OK: Derived is unambiguously
                              // derived from BaseClass. 
   (ADerived.*pmfnFunc2)();   // OK: defined for Derived.
}

報酬。 * 或-> * 成員指標運算子是一種物件或成員指標的宣告中指定之型別的函式。 是,在上述範例中,運算式的結果ADerived.*pmfnFunc1()會傳回虛值函式的指標。 如果第二個運算元是左值,這個結果是左值。

注意事項注意事項

如果其中一個成員指標運算子的結果是函式,然後結果可以只能被用作函式呼叫運算子,運算元。

請參閱

參考

C + + 運算子

運算子優先順序和順序關聯性