成員指標運算子:。 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()會傳回虛值函式的指標。 如果第二個運算元是左值,這個結果是左值。
注意事項 |
---|
如果其中一個成員指標運算子的結果是函式,然後結果可以只能被用作函式呼叫運算子,運算元。 |