2016-06-22 54 views
-1

比方說,我們有一個類A它有一個方法void foo()。我知道我可以通過使用&A::foo得到指向foo()的指針,但是這個指針似乎只依賴類類型,而不是在實例化對象上。如果我們有兩個對象a1a2類型A,我們如何才能使用指針,成員函數指針或甚至指針地址之間的差異和a2foo()方法?基本上,我希望能夠得到一個指向a1對象內的void foo()方法的指針,該指針與指向a2中的void foo()方法的指針不同。謝謝。比較成員函數指針

+1

爲什麼一個類的兩個實例有不同的成員函數? –

+2

這聽起來像你可能正在尋找功能+綁定,但很難說肯定沒有更多的細節問題。 –

+0

其實,他們沒有。兩者都有相同的成員函數'void foo()',所以我們可以執行'a1-> foo()'和'a2-> foo()'。 – baboulinet

回答

0

我不認爲你可以讓他們不同。 a1-> foo()和a2-> foo()基本相同。

0

我想你在這裏對一個對象(或類的實例)的概念感到困惑。一個物體就像一個班級的藍圖。 對於每個對象,不能有不同的成員/成員函數。

例如。

class A 
{ 
    int result; 

    public: 
    void add(int x, int y) 
    { 
    this->result = x + y; 
    } 
} 

所有A類的對象將具有成員變量結果和在它的成員函數add()。因此,obj1->add()obj2->add()將調用相同的add()函數,即使對象本身具有彼此不同的屬性。

obj1->add(1,2)將導致obj1->result爲,而

obj2->add(1,3)將導致obj2->result爲。