cegui事件訂閱為什麼可以是私有的

2021-05-23 21:11:29 字數 1299 閱讀 9023

用了很久,也私有了很久~好像以前也想到過~

mloginbtn->subscribeevent( cegui::window::eventmouseclick, cegui::event::subscriber( &guilogin::handleclickbtnlogin, this ) );

handleclickbtnlogin是私有的函式,subscriber將函式指標的位址和this物件指標儲存起來了。。

為啥不報訪問私有函式的錯誤那?

//privatememberfuncptr.h

#pragma once

#include "stdio.h"

class slotfunctorbase

;virtual void operator()() = 0;

};slotfunctorbase* g_slotfunctorbase;

template

class memberfunctionslot : public slotfunctorbase

virtual void operator()()

private:

memberfunctiontype d_function;

t* d_object;

};class privatememberfuncptr

};//privatememberfuncptr.cpp

#include "privatememberfuncptr.h"

void privatememberfuncptr::bind()

void main()

1.main中生成

privatememberfuncptr 0x003d3518

2.void privatememberfuncptr::bind()函式中

0x00411580 privatememberfuncptr::print(void)

3.跟到memberfunctionslot的建構函式中

memberfunctionslot(memberfunctiontype func, t* obj) :

d_function(func),

d_object(obj)

func = 0x00411131 privatememberfuncptr::print(void)

obj = 0x003d3518

為什麼會有差異那?估計在

virtual void memberfunctionslot::operator()()

中可以間接訪問私有函式的關鍵就在上面黃色函式位址發生了變化~希望高手能解答下~

什麼函式可以是或不是虛函式

虛函式的呼叫關係 this vptr vtable virtual function 虛函式指標在類的建構函式中建立 屬於類的成員 呼叫this訪問虛函式指標,指標指向虛函式表 static成員函式 static成員不屬於任何類物件或類例項,沒有this指標,因此不能為虛函式。建構函式 建立初始化物...

金為什麼可以生水?水為什麼可以生木?

五行相生,金生水 水生木 木生火 火生土 土生金,在現代人看來,有些不可理解,例如 金為什麼可以生水?水為什麼可以生木?同理,五行相剋,金剋木 木剋土 土剋水 水剋火 火剋金當中,木剋土 土剋水之類,也有點不好理解,似乎與常識有些格格不入。其實,一切產生於古代的文化,都必須用那個時代的常識或理念來解...

機器為什麼可以學習

機器學習 人工智慧炙手可熱,但是機器到底為什麼可以學習呢?本文將從霍夫丁不等式講到vc維,機器學習的原因所在。機器什麼時候可以學習 機器怎麼學習 如何讓機器學得更好總結 機器學習乍聽之下很厲害,這時候人就會想,這乙個普普通通的死板的機器,怎麼會學習呢?很容易地,人們舉了個簡單的問題 如下圖 x,y,...