1樓:孟儂
1 和類名相同
2 沒有返回值型別宣告
還有除了以上說的倆點,還要注意:
二.建構函式的定義
建構函式的名字不能隨便起,必須讓編譯器認得出才可以被自動執行。它的命名方法既簡單又合理:讓建構函式與類同名。
除了名字外,建構函式的另一個特別之處是沒有返回值型別,這與返回值型別為void的函式不同。如果它有返回值型別,那麼編譯器將不知所措。在你可以訪問一個類的方法、屬性或任何其它東西之前, 第一條執行的語句是包含有相應類的建構函式。
甚至你自己不寫一個建構函式,也會有一個預設建構函式提供給你。
class testclass
// 由clr提供
} 下面列舉了幾種型別的建構函式
1)預設建構函式
class testclass
希望可以幫上你的忙哦
2樓:糖糖寳寳
建構函式 ,是一種特殊的方法,主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中,特別的一個類可以有多個建構函式 ,可根據其引數個數的不同或引數型別的不同來區分它們 即建構函式的過載。
如果一個類中沒有定義任何的建構函式,那麼編譯器只有在以下三種情況,才會提供預設的建構函式:
1、如果類有虛擬成員函式或者虛擬繼承父類(即有虛擬基類)時;
2、如果類的基類有建構函式(可以是使用者定義的建構函式,或編譯器提供的預設建構函式);
3、在類中的所有非靜態的物件資料成員,它們對應的類中有建構函式(可以是使用者定義的建構函式,或編譯器提供的預設建構函式)。
3樓:不ke愛
倆特點..
1 和類名相同
2 沒有返回值型別宣告
請問c++中一個建構函式後面加個冒號是什麼意思
4樓:匿名使用者
a(b)實際上是做的是用b初始copy化a的成員x;既x=b;
:是初bai始化列表方式,建議你看看相du關章節再來理解.
b1(int a=0,int b=0):a(b) //就是zhi這句其實可以dao寫成:
b1(int a=0,int b=0):a(b),y1(a){}這就是初始化列表方式,你要是這都沒弄懂,就到繼承了,那肯定更不好理解!
5樓:端武者
初始化列表,跟在{}裡面的初始化沒有什麼不同,但在非靜態const型別以及引用型成員變數必須在初始化列表裡面初始化,不能在{}裡面初始化.a(b)就是用父類的建構函式進行一部分初始化.
6樓:兜裡有兩塊糖
當類繼承的時候,其實是沒有繼承類的建構函式的,所以在對派生類中必須對基類進行初始化,而這個初始化必須是以初始化列表的形式初始化。
7樓:匿名使用者
表示類之間的繼承關係,即 class b1 繼承了class a 的所有成員和操作函式
c++建構函式後面加冒號是什麼意思?後面應該加什麼內容呢?是賦初值嗎?
8樓:匿名使用者
冒號後面跟的是賦值,這種寫法是c++的特性。
a( int aa, int bb ):a(aa),b(bb)
相當於a( int aa, int bb )
c++ 建構函式前面加個~表示啥
9樓:我家的夏爾
解構函式:
當一個類的物件離開作用域時,解構函式將被呼叫(系統自動呼叫)。解構函式的名字和類名一樣,不過要在前面加上 ~ 。對一個類來說,只能允許一個解構函式,解構函式不能有引數,並且也沒有返回值。
解構函式的作用是完成一個清理工作,如釋放從堆中分配的記憶體。
一個類中可以有多個建構函式,但解構函式只能有一個。物件被析構的順序,與其建立時的順序相反,即後構造的物件先析構。
10樓:
第一個建構函式
第二個解構函式
c++為什麼一定要定義無參建構函式?是用來做什麼的?
11樓:育知同創教育
c++中無參構造來函式的作用:
該類物件源被建立時,編譯系統物件分配記憶體空間,並自動呼叫該建構函式->由建構函式完成成員的初始化工作。
故:建構函式的作用:初始化物件的資料成員。
舉例:class counter
private:
// 資料成員
int m_value;
}counter()是一個無參建構函式,就是為了初始化m_value的。
12樓:匿名使用者
可以不用定義啊。
只要有一個構
造函式就可以,甚至建構函式都可以是私回
有的。類定義必答須要提供建構函式,作用是對類初始化,這個是建構函式的作用,建議好好理解一下。
單例模式中,建構函式是私有的,**如下:
class csingleton
static csingleton *m_pinstance;
public:
static csingleton * getinstance()};
13樓:阡陌她人只為你
並不是一定要定義,主要防止你重新定義了有參建構函式,定義了物件卻沒有初始化。。。
14樓:匿名使用者
沒有這個要求,可以不定義的
在c++類中,定義建構函式的目的是什麼
15樓:糖糖寳寳
建構函式通常用於在例項化物件時自動對內部資料成員初始化,設定初始值、分配記憶體空間等。
而解構函式則用於刪除物件時做收尾工作,比如釋放申請的空間等。
要建立一個物件,就得呼叫建構函式。
要銷燬一個物件,就會被迫的呼叫解構函式。
如果成員函式宣告稱static,不建立物件也能呼叫 靜態成員函式。
16樓:匿名使用者
根據你的需要來自定義建構函式。
c++規定,每一個類必須有一個建構函式。如果在class中沒有定義建構函式,編譯器會自動構建。當然編譯器定義的函式不會執行任何事件。
如果需要在class建立時執行一些時間,就可自定義class的建構函式。
c++類的呼叫:
c++類的呼叫:
17樓:匿名使用者
讓我來告訴你答案!用來在建立物件時初始化物件
18樓:匿名使用者
簡單來說,就是初始化類中資源,使得在使用時有正確的值可用。另外就是做一些準備工作
19樓:匿名使用者
沒多大用,虛擬機器會預設為你加一個沒有引數的構造方法!
20樓:匿名使用者
用來在建立物件時初始化物件
21樓:
初始化物件啊,給物件賦初始值等
22樓:豆綠夏袁麗
可以在類外定義的。實際寫較大一些的程式一般是這樣做的:建立一個標頭檔案,裡面是類的定義,一些常量和變數的定義,然後再對應的cpp檔案中進行實現。
c中建構函式與解構函式的問題,C 中建構函式與解構函式的問題
你的getname函式在 你的類定義中只有getscore和getid c 關於建構函式和解構函式呼叫次數的問題 沒問題啊。引數傳遞的時候第一次拷貝構造呼叫,在函式返回的時候賦值給c2 再次呼叫了拷貝構造。析構的話 c1 c2 c 三次 傳遞引數和返回引數各一次拷貝建構函式,所以是2次 有兩個物件c...
c無參的建構函式問題,C 中無參建構函式的使用問題
vs 2005要求必須要有建構函式,這是一定的不過如果有帶參建構函式,就可以不要無引數的建構函式。至於當類中有帶引數的建構函式時,vs 2005要求有一個無參的建構函式。這只是一種建議。就像你說的,他是為了防範出錯,屬於比較保守的安全程式設計,類似於斷言程式設計一類的規定 就好比說,有一個電器他規定...
在c類中定義建構函式的目的是什麼
糖糖寳寳 建構函式通常用於在例項化物件時自動對內部資料成員初始化,設定初始值 分配記憶體空間等。而解構函式則用於刪除物件時做收尾工作,比如釋放申請的空間等。要建立一個物件,就得呼叫建構函式。要銷燬一個物件,就會被迫的呼叫解構函式。如果成員函式宣告稱static,不建立物件也能呼叫 靜態成員函式。 根...