1. 什麼是建構函式?
2. 怎麼寫建構函式?
3.什麼是預設建構函式。
4. 建構函式的簡單應用。
下面我們就這具體來解決這幾個問題————
1. 什麼是建構函式?2. 怎麼寫建構函式?
怎麼寫建構函式我們就從**來演示吧:
class fruits
fruits(int price)
fruits(char *name,int price)
fruits(int price,char *breed,int amount)
fruits(char *name, int price, char *breed, int amount)
};在這個類裡的所有函式都是class fruits的建構函式,在c++中是以函式原型來區分函式的,函式原型: 函式返回值型別 + 函式名 + 形參(形參的型別+ 形參的個數)
類中的函式也可以在類中宣告 在類的外部定義
class fruits ;
fruits::fruits()
fruits::fruits(int price)
fruits::fruits(char *name, int price)
fruits::fruits(int price, char *breed, int amount)
fruits::fruits(char *name, int price, char *breed, int amount)
細心的讀者一定會發現在類中建構函式的宣告中只有形參的型別,那麼會不會有錯呢?不會。(c++函式過載)當然加上形參變數也沒錯就和上邊的一樣。因為c++在編譯的時候 第一步 訪問資料成員 ;第二步 掃瞄函式的宣告但不識別函式體 ;第三步 識別函式體並改寫函式(這裡涉及到指標this,關於this會在另一篇博文中進行詳解)。
:: 作用域解析符
fruits::fruits(char *name, int price, char *breed, int amount)
fruits::就是說fruits這個函式是fruits類內部的函式。
呼叫方式不同,在類裡面定義的是內聯函式
//呼叫 的時候不發生控制權轉移,作為函式體本身乙個模組進行呼叫
在類外面定義的函式
//情況相反,呼叫 的時候需要開闢一部分空間
//總結就是類裡面定義的呼叫更快,更節省記憶體
3. 什麼是預設建構函式
在c++的乙個類中,如果建構函式沒有引數,或者建構函式的所有引數都有預設值,就可以稱其為預設建構函式。乙個類中,只能有乙個預設建構函式。當你在設計乙個類的時候沒有寫出建構函式,編譯器會在編譯的時候給出缺省建構函式。
#include
#include
using
namespace
std;
class fruits ;
int main()
4. 建構函式的簡單應用。
(因為c++是基於物件的程式設計,所以我認為建構函式就好比是在你出生時你父母所能給與你的身份一樣。而你在就如同c++中的物件,你的身份就是類的設計中的屬性值(資料成員)得組合)
#include
#include
using
namespace
std;
class fruits
fruits(int price)
fruits(char *name, int price)
fruits(int price, char *breed, int amount)
fruits(char *name, int price, char *breed, int amount)
void view()
};int main()
建構函式的引數的不同意味著**並不是所有的資料成員**(設計的類中的變數(類的屬性)
char *name; int price; char *breed;int amount;)都需要被初始化,
C 類的建構函式
第一次寫部落格,有點不知從哪點下手,還是先記錄一下最近看的c 有關類的建構函式方面的知識吧。首先,類的建構函式是在類的定義時就直接對該類物件的成員變數進行初始化,建構函式的函式名與類名相同且沒有返回值,建構函式不能被子類繼承,也不能宣告為虛函式,在子類中必須重新定義建構函式,但建構函式可以進行過載,...
類的建構函式(C )
對於stock類,還有其他的一些工作要做。應為類提供被稱為建構函式和析構函式的標準函式。類不能像結構一樣初始化,原因在於,資料部分的訪問狀態是私有的,這意味著程式不能直接訪問資料成員。程式只能通過成員函式來訪問資料成員,因此需要設計合適的成員函式,才能成功地將物件初始化 如果使資料成員成為公有,而不...
C 類的建構函式
c 類的建構函式是類的成員函式,在建立類時,會自動生成乙個預設建構函式,執行時自動呼叫,如果不對預設建構函式進行修改,則不執行任何功能。一般可用建構函式進行成員變數的初始化。使用自定義建構函式可以對其進行傳參,在呼叫時根據傳入引數選擇所使用的建構函式。同時可通過初始化列表方式對引數進行初始化。cla...