自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Qt面試題包含函數(shù)指針

移動開發(fā)
一篇關(guān)于Qt面試題包含函數(shù)指針的文章介紹給大家,面試的時候,肯定能用的到,作為編程愛好者的你,那就不要給自己留下一絲漏洞,看看本文吧。

Qt 面試題包含函數(shù)指針的一篇文章與大家,在你面試的時候,一定能用的到。那么快參考以下本文吧。

面試官問的問題是:Qt信號槽機制,你覺得可以用什么策略來取代? 因為signal-slot本身是一個順序執(zhí)行的過程,只有執(zhí)行完slot之后,才會執(zhí)行emit的下一條語句。其策略類似于函數(shù)調(diào)用,只不過由于其在QObject中架設(shè)了一個大的結(jié)構(gòu),這導(dǎo)致其執(zhí)行效率不是很高,比直接的函數(shù)調(diào)用要慢10倍(忘記拿看的數(shù)據(jù)了)。平時在做項目時:如果可以我一般是用寫純虛接口的方式來替代signal-slot。  

面試官又問:你有沒有想過用函數(shù)指針來替代? 汗一個先,以前真沒想過,而且函數(shù)指針用的也很少,今天專門補了一下這方面的知識,如下:

一:關(guān)于函數(shù)指針。

這個要區(qū)分于指針函數(shù)。

(1)一個程序分為代碼區(qū)和數(shù)據(jù)區(qū),那么一個指針既可以指向在內(nèi)存中存放數(shù)據(jù)的數(shù)據(jù)區(qū),也可以指向存放代碼的代碼區(qū)。代碼區(qū)中存放的就是各個函數(shù)。由此可見:我們可以用一個指針來指向某個函數(shù)。

(2)在c語言中規(guī)定:一個函數(shù)總是占有一段連續(xù)的內(nèi)存區(qū),而函數(shù)名就是該函數(shù)所占內(nèi)存區(qū)的首地址。   我們可以將該函數(shù)所占的這塊內(nèi)存區(qū)的首地址賦給一個指針變量,使該指針變量指向這個函數(shù)!   而后我們就可以使用這個指針變量來找到和調(diào)用該函數(shù)。

這種指向函數(shù)的指針變量就是“函數(shù)指針”

函數(shù)指針的一般定義形式是:

函數(shù)返回值類型 (*函數(shù)指針名)(函數(shù)形參列表)

例如:int (*pmax)(int,int); 這定義了一個指向含2個int形參,返回int值的函數(shù)指針。

比如:函數(shù) int max(int a,int b)

我們可以這樣調(diào):

  1. int as = max(a,b);  //這是用函數(shù)名調(diào) 

我們也可這樣調(diào):

  1. int(*pmax)(int,int);//使用函數(shù)指針來調(diào)用  
  2. pmax = max;  
  3. int as = (*pmax)(a,b); 

注意事項:函數(shù)指針是指向函數(shù)的指針變量,它只能指向函數(shù)的入口處,而不能指向函數(shù)中間的某一條指令! 所以不能用*(pmax+1)這樣的方式來執(zhí)行函數(shù)的下一條指令。

二:signal-slot如何用函數(shù)指針來替代:

知道函數(shù)指針是怎么回事后,我們就可以來思考這個問題了。

其本質(zhì)還是如何使用函數(shù)指針來實現(xiàn)函數(shù)調(diào)用,那明擺著就是需要把函數(shù)指針都存放起來,而后當調(diào)用的時候直接去這個存放處查找即可!我理解面試官的意思是這樣的:

(1)原本在一個類中定義一些slot,我們可以如下替代他們:首先定義一些普通的成員函數(shù)(原本他們應(yīng)該是slot),而后另外再建一個void函數(shù)指針數(shù)組:將原本用作slot的函數(shù)的函數(shù)指針全部存進來。  這樣:對于一個類而言:我們就是用一個函數(shù)指針數(shù)組來取代了slot。(同時用這個數(shù)組來區(qū)分一般的成員函數(shù) 和 類槽函數(shù))。

(2)對于connect()函數(shù)和signal,我沒想出什么好辦法,貌似只能用observer接口。直接去調(diào)函數(shù)指針數(shù)組中的對應(yīng)函數(shù)。

我覺得關(guān)鍵在于:含有槽的類中:如果用函數(shù)指針來做的話,可以將原本的各個slot函數(shù)直接聲明為private成員函數(shù),而將這個數(shù)組對外開放為public,這樣封裝一下的比較好,也能體現(xiàn)其區(qū)分優(yōu)勢。

小結(jié):Qt 面試題包含函數(shù)指針的內(nèi)容介紹完了,不知道有沒有幫助到你,

【編輯推薦】

Qt中文顯示問題解決

在Qt中實現(xiàn)串口通信

淺談Qt中多線程編程

利用Qt Designer開發(fā)Qt界面

如何讓插件加載到Qt Designer

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2020-06-04 14:40:40

面試題Vue前端

2023-11-13 07:37:36

JS面試題線程

2011-03-24 13:27:37

SQL

2009-06-06 18:34:05

java面試題

2009-06-06 18:36:02

java面試題

2015-09-02 09:32:56

java線程面試

2014-09-19 11:17:48

面試題

2025-02-26 07:58:41

2018-03-08 18:40:47

Java百度面試題

2023-07-14 08:12:21

計時器unsafecontext

2013-01-05 14:51:34

JavaScriptjQuery面試

2024-06-04 14:52:28

2014-07-28 14:00:40

linux面試題

2013-05-29 10:23:36

Android開發(fā)移動開發(fā)Java面試題

2021-02-23 12:43:39

Redis面試題緩存

2020-11-05 10:01:35

系統(tǒng)設(shè)計軟件

2009-06-16 14:03:16

Hibernate面試Hibernate面試

2015-07-13 09:45:32

阿里校招

2021-05-31 07:55:44

smartRepeatJavaScript函數(shù)

2015-07-23 14:13:43

前端開發(fā)面試題
點贊
收藏

51CTO技術(shù)棧公眾號