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相應的標頭檔案,類的公開成員就可以使用了!私有成員,類自己和友元可用,保護成員子類也可用!
C類的問題基類成員函式可以呼叫子類的成員函式嗎
父類 子類 這種關係,本來設計就是把 具備共性的東西放在父類裡,不具備共性的放在子類裡.嚴格來說,父類是不能去呼叫某個子類特有的介面的.你這樣瞎搞 就破壞了這種構架,只能讓程式紊亂.所以你可以這樣子 在父類立面設計一個通用介面,然後對這個通用介面下指令,子類收到這個訊息,大多不處理,只有那個特殊的子...
C 中類的成員函式定義成static與C中的static的函式有什麼不同
曾聽南 類的靜態成員函式不與任何物件相聯絡,它可以直接訪問類的靜態資料成員,而不能直接訪問類的普通資料成員 即非靜態資料成員 因為普通資料成員只有類的物件存在時才有意義。c中的靜態函式只在本檔案中有效。 血天藍海 如果是靜態函式 static 型別 函式名 形參 這樣的函式 它可以被 類名 函式名 ...
c 中成員變數與成員函式的呼叫疑問?請高手指導
看來你對物件導向程式設計還不瞭解,介紹你先學學c 的基礎語法,再看孫鑫的vc m edit1是一個物件,getwindowtext是這個物件的方法。就比如有個學生型別的物件 stu,學生有個行為是 學習 在程式裡你想讓它學習的話就要用 stu.學習 告訴計算機我想讓這個學生學習。你舉的例子中 m e...