c成員函式的實現部分 寫在類外 ,究竟屬於類的內部還是外部

時間 2021-05-14 08:40:20

1樓:

不管是類外實現還是類內實現,都是在類的作用域內部,比如類外實現class a

void a::show()

雖然是在類外實現但是必須要用作用域解析運算子,編譯器才知道這是a類的作用域的函式,否則就報錯!所以咯,不管是**實現都保證是在這個作用域內部,也就是說本來就是屬於類內部的

2樓:匿名使用者

函式名和函式體是類作用域內。

3樓:急速人

成員函式申明放在標頭檔案中,定義一般放在原始檔中,一般寫在類之外,如果在其他原始檔中呼叫的話,首先得在其他原始檔中新增該成員函式所在的標頭檔案,然後申明一個該類的物件或者指標才能在其他原始檔中呼叫該成員函式!

請問c++中成員函式在類裡面定義和在類外定義有什麼區別?

4樓:浪跡天涯的流星

效能來說沒啥區別。

不過放在類外,**的定義和實現分開,有利於**封轉,別人需要呼叫你的介面的時候,你可以只給他標頭檔案,**的實現自己留著。

5樓:匿名使用者

在類裡定義時,這種函式會被編譯器編譯成行內函數,在類外定義的函式則不會。行內函數的好處是加快程式的執行速度,缺點是會增加程式的尺寸。比較推薦的寫法是把一個經常要用的而且實現起來比較簡單的小型函式放到類裡去定義,大型函式最好還是放到類外定義。

6樓:壞白闌珊

差多了。作為剛學習c++的人,我提醒一個點,可以去了解一下行內函數。

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

7樓:薩珺堵雁山

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

8樓:

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

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

9樓:匿名使用者

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

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

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

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

10樓:匿名使用者

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

// 標頭檔案

class a

// 定義檔案

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

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

11樓:

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

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