1樓:網友
因為new 的搭祥穗時候會呼叫構造方法,如果它沒有生成構造器,宴賀怎麼能new 出來物件呢!!
想想看,知卜是不是這樣!!
如果定義了複製建構函式,編譯器還會有自動生成預設建構函式嗎?
2樓:篤俠
會的。如果定義了複製建構函式而沒有定義建構函式,編譯器就還會自動生成預設建構函式的。
3樓:網友
不會的,複製建構函式是建構函式。
對於乙個類如果不定義構造方法,編譯器預設乙個無參的構造方法,**中會顯示出嗎?
4樓:匿名使用者
如果沒有寫建構函式,則系統會自動生成建構函式,如果自己新增建構函式,無論有引數或是沒引數,預設建構函式都將無效。
你可能是把書上的無參建構函式當成預設建構函式了。
5樓:匿名使用者
有預設的構造方法的 比如類student裡面就有預設的構造方法 public void student(){假如你自己定義了構造方法,就會覆蓋系統自己定義的,定義多個也可以實現過載!
6樓:匿名使用者
不會,不過可以通過反彙編檢視,但是如果你定了乙個建構函式(無參獲帶參的)那麼原先預設的建構函式將自動被登出。
建構函式,解構函式,拷貝建構函式不寫c++編譯器會自動為每個建立的類自動生成,那為什麼還要寫
7樓:網友
系統為類所自動建立的建構函式和解構函式相當於是空語句,如果你又特殊的需要,比如你的乙個類執行完後需要delete,此時的解構函式不會自動幫你delete的 所以你必須自己寫乙個。
同樣乙個類的建立如果需要初始化一些特定的資料,系統自動的建構函式也不會幫忙,只有自己寫。
然後拷貝建構函式就如上面所說的 不會進行深拷貝。
總而言之,系統所給你自動建立的都是很淺的,當然你剛接觸程式設計很多系統給的就夠了,但你以後工程複雜後系統自帶的就難以滿足你的要求,你需要自己寫演算法完成自己想要的操作。
比如對於分數運算 a = 2/3 b = 1/2 c = a + b; 這樣系統肯定報錯吧,但你可以通過過載運算子去完成你想完成的。
8樓:千江月
因為有可能出錯。。預設自動生成的拷貝建構函式是淺拷貝。。
例如:類中包含指標時,必須自定義拷貝建構函式,將其改為深拷貝,不然析構什麼的會出錯。
9樓:網友
自動生成的不滿足需要,就還是要寫。
比如你想深拷貝,比如你想析構時釋放記憶體關閉檔案,這些就不能使用預設函式達到要求。
10樓:
如果是你自己定義的類,且沒有繼承其它基類,那麼c++編譯器是不會為這個類自動生成這些函式的。
為什麼乙個類沒有建構函式時編譯器會提供乙個預設構造方法?
11樓:網友
因為乙個物件要被建立出來,就必須呼叫建構函式,如果類歷褲裡面沒有顯式定義建構函式,就會呼叫預設模咐建構函式,否則該物件不能被構造出來肢碼簡。
12樓:叮噹小甜點
構造方法是初始化用的,如果你自己定義的類就必須自己定義構造方法。
13樓:
只要類中有乙個成員有自己的預設建構函式時,vs的編譯器不會報錯,但如果成員全沒有,在建立物件時皮渣,會告訴你沒公升握虧有初始化,沒有初始化也代表著沒有提供預設的構造方法。
另外,如果類中只有static成員,根本不需要建立物件吵神,那就更不需要預設構造方法了。
14樓:匿名使用者
建構函式的作用是對類的物件初始化,想想看,沒有初始化的類能做什麼?
編譯器生成的預設建構函式有什麼作用
15樓:網友
您好,我看到您的問題很久沒有人來回答,但是問題過期無人回答會被扣分的並且你的懸賞分也會被沒收!所以我給你提幾條建議:一,你可以選擇在正確的分類下去提問,這樣知道你問題答案的人才會多一些,回答的人也會多些。
二,您可以到與您問題相關專業**論壇裡去看看,那裡聚集了許多專業人才,一定可以為你解決問題的。三,你可以向你的網上好友問友打聽,他們會更加真誠熱心為你尋找答案的,甚至可以到相關**直接搜尋。四,網上很多專業論壇以及知識平臺,上面也有很多資料,我遇到專業性的問題總是上論壇求解決辦法的。
五,將你的問題問的細一些,清楚一些!讓人更加容易看懂明白是什麼意思!謝謝採納我的建議! !
c++類中編譯器會自動給出的4個函式,構造。析構,拷貝和什麼。。。
16樓:傲i炍
拷貝建構函式,賦值運算子函式,解構函式,取址運算子函式。
什麼時候需要自定義複製建構函式?若程式設計師沒有定義複製建構函式,則編譯器自動生成乙個預設的複製建構函式
17樓:董俊錕
系統預設的複製建構函式是不帶引數的,沒有引數傳遞的時候可以不用,即使有引數,複製建構函式可以不寫,用引用代替,比較方便。
要是既沒有引用,又沒有複製建構函式,會提示缺少建構函式,,default copy constructor
18樓:o默化
但你要為你的資料成員做特別的處理的時候才會自己定義 沒定義 系統會自動生成。
一般不會有問題 比如你先驗證一下是否用力複製建構函式 你可以在裡面加條語句 或者你想在理面 做一下其他處理 你就得自定義了 一般不會有其他問題。
預設建構函式 default constructor 是指編譯器自動生成建構函式嗎?
19樓:網友
預設建構函式是在你沒有為類明確定義不帶引數的建構函式時攔嫌慧,編譯器為其隱式新增的(標準要求編譯器簡答這麼者世做!),如果你自己定義了不帶引數的建構函式,那麼該類不再有預設建構函式,你定義的為不帶引數的建構函式!
如何用c寫編譯器,如何用c寫一個編譯器
先學編譯原理。然後根據步驟,1 處理預編譯 2 詞法分析 3 語法分析 4 語義分析 5 中間 轉換 6 二進位制 生成。簡單起見,不需要考慮優化。初期可以不需要支援太多語法。怎樣去寫一個編譯器 用c語言寫c語言編譯器 需 這個需要考慮到很多的問題 各種錯誤的型別 以及可能出現的情況 這個可以先去看...
有關Visual C 6 0編譯器的問題。
第一,安裝版,解壓版,按照tunsanty處理,第二,include 和 include 是不一樣的,注意哦。使用之前,要建乙個工程,不知你是否建了,還有,這個軟體是乙個垃圾級軟體,不支援友元,換gcc器吧。如果你的機子夠好的話,下個vs 包含c 是個不錯的選擇 方便多了 請教visual c .集...
asp問題,急。VBScript編譯器錯誤錯誤800a03ea
看起來是格式問題 你把裡面的空格什麼的都檢查一下,或者去掉對這個function的呼叫以及去掉這個function也面的include看看 以下 看起來沒什麼問題,但是 function lleft content,lef dim le for le 1 to len content if asc ...