c為什麼要用inline來定義類外的成員函式既然可

時間 2021-05-14 08:37:13

1樓:匿名使用者

良好的習慣是類定義裡面只寫成員函式宣告,函式定義寫在外面或者另外一個檔案。這樣的話inline顯然不是多此一舉

2樓:砍侃看

什麼叫inline定義類外的成員函式,你描述清楚些。

3樓:牧羊人使者

inline效率高吧

c++在類外部定義的成員函式是不是inline函式,沒有在內部宣告為inline

4樓:薩珺堵雁山

寫在類體內的成員函式和inline開頭寫在類外的成員函式,以及inline開頭的非類成員函式是行內函數

5樓:

etiu2009你的概念有誤,你可以去翻c++ primer,在類內定義的函式預設為inline。

對於簡單的函式,前面可以顯式加上inline表示是行內函數,這樣編譯器就會在呼叫處**,提高執行效率。你在成員函式前加inline,在類外定義還是行內函數。不過這只是一種請求式的宣告,因為一個有幾百行或者迴圈的函式是不可能inline的。

6樓:匿名使用者

是否 inline 和是否在類內部定義沒有必然的聯絡。

你可以在你的函式頭部加上 inline 關鍵字強制開啟內聯,但編譯器仍然會對此做優化。

即使沒有加 inline 關鍵字的函式,如果呼叫次數不多或者**很簡單,編譯器會自動把它轉為 inline;反之亦然,即使加了 inline 關鍵字,某些呼叫頻繁或**比較複雜的函式,編譯器亦然會把它專為非 inline。

c++中定義在類內的成員函式呼叫外部函式還是inline的嗎?

7樓:崊陂咭溮鈸

說一個函式是inline的,是說它會被在(其他函式裡)呼叫它的地方,而不是這個函式內對其他函式的呼叫。

8樓:匿名使用者

定義在類內部的成員函式都是自動inline的,那麼如果成員函式裡呼叫了外部的函式,會怎樣呢?會將這個外部函式也內聯,還是執行壓棧保護現場這些操作來呼叫這個外部函式呢?說一個函式是 inline 的,是說它會被在(其他函式裡)呼叫它的地方,而不是這個函式內對其他函式的呼叫。

c++c++這個詞在中國大陸的程式設計師圈子中通常被讀做「c加加」,而西方的程式設計師通常讀做「c plus plus」,「cpp」。 它是一種使用非常廣泛的計算機程式語言。c++是一種靜態資料型別檢查的、支援多重程式設計正規化的通用程式設計語言。

它支援過程化程式設計、資料抽象、物件導向程式設計、泛型程式設計等多種程式設計風格。最新正式標準c++於2023年8月18日公佈。其程式設計領域眾廣,常用於系統開發,引擎開發等應用領域,是至今為止最受廣大程式設計師受用的最強大程式語言之一,支援類:

類、封裝、過載等特性。

語言特點

優點c++**· c++設計成靜態型別、和c同樣高效且可移植的多用途程式設計語言。

c++設計成直接的和廣泛的支援多種程式設計風格(程式化程式設計、資料抽象化、物件導向程式設計、泛型程式設計)。

c++設計成給程式設計者更多的選擇,即使可能導致程式設計者選擇錯誤。

c++設計成儘可能與c相容,藉此提供一個從c到c++的平滑過渡。

c++避免平臺限定或沒有普遍用途的特性。

c++不使用會帶來額外開銷的特性。

c++設計成無需複雜的程式設計環境。

出於保證語言的簡潔和執行高效等方面的考慮,c++的很多特性都是以庫(如stl)或其他的形式提供的,而沒有直接新增到語言本身裡。關於此類話題,bjarne stroustrup的《c++語言的設計和演化》(1994)裡做了詳盡的陳述。

c++在一定程度上可以和c語言很好的結合,甚至目前大多數c語言程式是在c++的整合開發環境中完成的。c++相對眾多的物件導向的語言,具有相當高的效能。

c++引入了物件導向的概念,使得開發人機互動型別的應用程式更為簡單、快捷。很多優秀的程式框架包括mfc、qt、wxwidgets就是使用的c++。

缺點一般情況下,c++效率和c語言的效率相差在±5%之間。因此在一般場合,c++可以替代c。

c++由於語言本身過度複雜,這甚至使人類難於理解其語義。更為糟糕的是c++的編譯系統受到c++的複雜性的影響,非常難於編寫,即使能夠使用的編譯器也存在了大量的問題,這些問題大多難於被發現。

由於本身的複雜性,複雜的c++程式的正確性相當難於保證。也有人提出不支援多執行緒的原語等缺陷。不過有如此多的知名人士提出瞭如此多的缺陷,正說明c++被廣泛使用和成功。

c++由於過度的複雜性,以及與unix的文化相牴觸,在unix/linux領域受到很多著名人士(比如linux之父linus torvalds與著名黑客eric s. raymond)的強烈批評與抵制。

請問c++類中的成員函式是不是都預設為inline函式?

9樓:

不是.行內函數有點像#define, 它把函式過程嵌入呼叫程式,避免頻繁入棧出棧,只能用於簡單的函式。類成員函式不一定是簡單的函式,所以不能預設為inline函式。

行內函數要用inline 顯式 宣告。

10樓:公西姮

如果寫在類定義中,那麼不用寫inline也是內聯的。

如果寫在類外,需要inline才是內聯的

11樓:匿名使用者

不是,你可以用step in (f11)來檢測!

c++成員函式的行內函數能否在類外宣告?

12樓:匿名使用者

我想你把函式的定義和宣告兩個概念混淆了,可以定義在外面,但是宣告肯定是在類內啊。

// 標頭檔案

class a

// 定義檔案

inline void a::foo(int x, int y) // 表明是一個行內函數

// 若是定義在類內,就是隱式內聯了,比如class a}

13樓:

可以,不過類內必須要有函式宣告

mfc自動生成的文件/檢視程式就有這樣的函式,一般類的成員函式,寫在類外的部分稱為定義,即函式的實現**!只要#include相應的標頭檔案,類的公開成員就可以使用了!私有成員,類自己和友元可用,保護成員子類也可用!

c++判斷題 定義在類內的成員函式是行內函數,定義在類體外的函式不能使行內函數

14樓:匿名使用者

錯誤!行內函數的定義如下:

行內函數是使用inline關鍵字宣告的函式,也成內嵌函式,它主要的作用是解決程式的執行效率。

只有inline這個關鍵字包含在函式宣告中, 才是行內函數。 與類沒有任何的關係!

舉例:static inline int max(int a, int b);

c++類內部函式在外面定義怎麼定義

15樓:椴

10.1.2 類成員函式的定義

類的成員函式通常在類外定義,一般形式如下:

返回型別 類名::函式名(形參表)

雙冒號::是域運算子,它主要用於類的成員函式的定義。

例如,例10-1的成員函式point類的成員函式可定義為:

例10-5

1. void point::setpt (int x, int y)

2. 6. void point::offsetpt (int x, int y)

7. 11. int point:: getx ()

12.15. int point:: gety ()

16.正象全域性函式可以定義為行內函數一樣,類的成員函式也可以定義為內聯的。例如,類point的兩個成員函式都很短(僅兩個語句),如果定義為行內函數,可以提高執行效率。定義內聯的成員函式只要在該成員函式定義前插入inline關鍵字即可:

inline void point::setpt (int x,int y)

定義行內函數一個更容易的方法是:將函式定義放在類的定義內。

class point

int gety ()

void setpt (int x,int y)

void offsetpt (int x,int y)

};需要注意的是:由於函式體在類內,所以函式原型後不需要分號,且所有的函式引數必須有名的。

16樓:幸巴達

class ex

;int ex::get(void)

void ex::set(int n) //關鍵是這裡,編譯器老是出錯

int main()

exarray[9].set(53);

for(int c=0;c<10;c++)return 0;}

c++中怎麼理解類內定義的成員函式就是行內函數?

17樓:匿名使用者

當你的class。public成員函式宣告的時候,只要這個函式體當中不存在switch等迴圈語句的時候,則這個函式體無論是在類的內部還是類的外部,這個成員函式在編譯器看來,都等同於inline 行內函數了。

18樓:手機使用者

好像inline現在確實很少用了,編譯器都越來越智慧了

tenglvjun說的對,編譯器是否把函式編成內聯,它有自己的判斷,並不會因為你寫了inline就一定是內聯.就和register一樣,並不是加了register,編譯器就一定會把變數放到暫存器中

19樓:扶範西門靈秀

在類內定義的成員函式預設為inline,不論前面是否加了inline,當然,是否內聯還是取決於編譯器啦~而在類外定義的成員函式就不是行內函數。

為什麼要用砂鍋熬中藥,為什麼要用砂鍋來熬中藥

卡吹娜 因為中藥在燉的過程中由於藥汁會加熱使得會與鍋起化學反應,如果用其他的會由於化學反應影響藥材的功效,而且有的鍋會在熬的過程中出現有毒物質。用砂鍋煎藥是因為它的性質穩定,不容易與藥物起化學反應,另外,它傳熱慢 受熱勻,不容易糊鍋,而且 便宜,所以選用砂鍋是最方便實用的。用平定的砂鍋熬米湯稀飯,水...

方差的定義為什麼要用平方?為什麼不用絕對值

1.標準差是總體中各單位標誌值與算術平均數的離差平方的算術平均數的平方根,又稱為均方差。它是測定標誌變動程度的最主要的指標。2.標準差與平均差的關係 標準差的實質與平均差基本相同,只是在數學處理方法上與平均差不同,平均差是用取絕對值的方法消除離差的正負號然後用算術平均的方法求出平均離差 而標準差是用...

C 中,char f,這樣定義是什麼意思,為什麼加號

貝景明斂妝 char f表示的是指向一個字元的指標,也就是說,實際上f中儲存的是一個記憶體地址,這個記憶體地址中裝了一個字元。為什麼要定義char 而不是直接用 呢?這是因為我們需要知道這個f中的記憶體地址裝的是什麼,這樣c 才知道我需要讀多少個記憶體單元,比如說int 佔用的空間是4個位元組,而c...