1. 程式人生 > >成員函式與非成員函式的區別

成員函式與非成員函式的區別

今天看書關於成員函式和非成員函式被搞得暈頭轉向的,在群裡問了一下大神們才搞懂是什麼意思,其實簡單來說成員函式是在類中定義的函式,而非成員函式就是普通函式,就是不是在類中定義的函式,其中非成員函式比較典型的是友元函式。下面貼上一些其他的一些區別和理解:

成員函式是類定義的一部分,通過特定的物件來呼叫。成員函式可以隱式訪問呼叫物件的成員,而無須使用成員操作符。友元函式不是類的組成部分,因此被稱為直接函式呼叫。友元函式不能隱式訪問類成員,而必須將成員操作符用於作為引數傳遞的物件。

1.成員函式是面向物件的概念,所謂的成員函式,是指一個函式作為類的成員,公有成員、私有成員或者保護成員。 
2.普通函式一般有兩種傳遞方式,按型別傳遞和按值傳遞,也就是傳指標和傳返回值兩種情況。成員函式一般是按型別傳遞,也即是傳指標地址 
3.普通函式可以隨便呼叫,並且無法繼承和封裝,成員函式根據類的不同,可以進行繼承,根據公有私有的不同,呼叫方式也不同 
4.深層次的區別,普通函式作為C語言的概念,用的是stdlib,成員函式是用iostream,編譯方法不同,至於誰佔記憶體多,並不好說,也不是說面向物件的就佔記憶體大些,還是看具體的環境和編譯器。 
5.嵌入式的程式設計,用普通函式較多,成員函式較少,當然ARM嵌入linux那種例外