我也碰到過這個,而用C讀取程序++指針內聯的含義?
inline Controller* Get_it() { // ... bla bla
我不明白這是什麼意思。這是否意味着Get_it函數的定義?我已經在其中定義了Get_it函數的文件中進行了搜索,但沒有找到它。我認爲語法a * b意味着b是指向結構體a的對象的指針,但是沒有結構體控制器。雖然有一個類別控制器在其他地方定義。
預先感謝您的人。我是C++的新手,我正在努力理解。
我也碰到過這個,而用C讀取程序++指針內聯的含義?
inline Controller* Get_it() { // ... bla bla
我不明白這是什麼意思。這是否意味着Get_it函數的定義?我已經在其中定義了Get_it函數的文件中進行了搜索,但沒有找到它。我認爲語法a * b意味着b是指向結構體a的對象的指針,但是沒有結構體控制器。雖然有一個類別控制器在其他地方定義。
預先感謝您的人。我是C++的新手,我正在努力理解。
Get_it
返回Controller*
的功能。這是一個指向Controller
的指針,它是一種類型,必須在翻譯單元的這個點上方聲明。該函數被標記爲inline
,這是編譯器提示它可以內聯代碼,基本上將函數體複製到每個被調用的地方。
這兩件事是分開的。指針不是inline
,函數是。
首先,你應該自己寫一本關於C++的好書。其次,這是一個指向Controller
對象(內存中的類)的指針。它由函數返回並且函數被內聯定義,這意味着它將被調用完全複製到調用點。
inline
單詞是建議編譯器做內聯哪裏合理,但是因爲你似乎指示函數是在類聲明內部定義的,它將被編譯器自動內聯。
的inline
關鍵字不適用於指針(函數的返回值),但函數本身。所以在這裏你聲明(並且定義)一個返回指針的函數inline
,其中Controller
。
關鍵字inline
影響它被定義什麼,只 適用於功能。形式上,它允許(並且實際上 需要)函數的多個定義。這也是 一個「暗示」的編譯器,所以應儘量直接在調用點生成的函數的代碼 ,而不是其他地方 產生的呼叫。 (爲正式 定義的動機是編譯器通常不能產生 聯代碼,除非它可以訪問的定義。)
的inline
關鍵字定義的方法,內聯,無論身在何處得到它的實現。上面的簽名意味着函數Get_it()
返回一個指向Controller
對象的指針。該函數本身是內聯的。內聯意味着方法get不是通過vtbl處理,而是直接在對象的內存中分配get,所以在對象實例上調用方法時沒有間接方向,但對象實例本身增長在內存大小。
是的,這是函數的定義。它返回一個指向Control類對象的指針 – Rob 2013-04-04 09:42:13