建構函式問題,請問這題怎麼建構函式?

2025-02-11 02:50:15 字數 2606 閱讀 5413

1樓:網友

你沒有定義secondtest的預設建構函式,也就是不帶引數的預設建構函式。

請問這題怎麼建構函式?

2樓:茹翊神諭者

簡單計算一下即可,答首肢芹歷案如者首世圖所示。

建構函式作用是什麼

3樓:楊子電影

拷貝建構函式是程式更加有效率,因為它不用再構造乙個物件的時候改變建構函式的引數列表。設計拷貝建構函式是乙個良好的風格,即使是編譯系統提供的幫助你申請記憶體預設拷貝建構函式。

建構函式是在建立給定型別的物件時執行的類方法。建構函式具有與類相同的名稱,它通常初始化新物件的資料成員。

建構函式(constructor)是一種特殊的方法 。主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中 。

4樓:hlod豬行

建構函式的作用是在建立物件時進行初始化工作,最常見的就是對成員變數賦值。建構函式是一種特殊的成員函式,它的名字和類名相同,沒有返回值,不需要使用者呼叫,而是在建立物件時自動執行。

建構函式的作用就是用來例項化的,打個比方:就是將畫在圖紙上的高樓模型變成真實的建築。在這個例子中this指的就是point。

它用來區分是point的x還是傳進來的x(也就是括號裡的x)。

建構函式的功能主要用於在類的物件建立時定義初始化的狀態。它沒有返回值,也不能用void來修飾。這就保證了它不僅什麼也不用自動返回,而且根本不能有任何選擇。

5樓:網友

這個問題這麼長時間沒有合適的回答麼?要搞清這個問題,首先要清楚建構函式的意義:建構函式並不是為了「初始化類」,至少不完全是。

不然它就會改叫「initializer」而不是「constructor」。構造的內涵比初始化要豐富。儘管大多數情況下,我們對類的構造內容限於給它的屬性賦值,但這僅僅是對簡單的使用場景。

對於複雜的設計模式,建構函式還要完成其他任務,從抽象的類去「建設」乙個功能化的例項。比如依賴注入,最流行的模式就是使用建構函式。

假設你的類要使用乙個服務,這個服務的作用是在類的方法工作時記錄一些日誌。但是日誌的記錄有可能會寫在文字檔案中、資料庫中或直接列印在螢幕上。但是我們知道solid設計原則要求我們的類不應該知道這些細節,我們只要在需要呼叫日誌功能的時候使用類似之類的方法。

那麼這個ilog服務怎麼「來到」我們的例項當中呢?假如你用屬性賦值的方法,看上去可行,但是你會發現我們還是「知道」了這個ilog服務例項的存在,這破壞了solid原則,你在「使用服務」這外增加了「獲取服務」這一不相關的任務,這時候就可以使用建構函式,在建構函式的引數中傳入(ilog logservice)這樣乙個例項,交給乙個私有成員_logservice,然後在類中使用_就好了。你可能會說,這不是換湯不換藥嗎?

你把屬性賦值變成了傳參,不還是得寫成ctor(logservice);這樣,logservice哪來呢?這時候就要更進一步使用諸如autofac之類的ioc類庫,去完成依賴的註冊。不過這些話題就有些遠了。

總的來說,建構函式的意義在於「例項化乙個具體功能的類」,這當然包括了「初始化」的部分,你可以查閱一些擴充套件資料,看看「初始化」之外的部分有多麼神奇。

6樓:網友

建構函式你也別想的太複雜,他起的作用你可以看作是初始化物件。

也就是說,當你例項乙個物件的時候,肯定會先去執行建構函式,其實就是初始化該物件內部定義的屬性。

當然就像你說的,你完全可以不用建構函式,在例項化物件以後,給其賦值也是可以的。

這個看個人開發的習慣和需求了。

7樓:網友

在物件程式語言中,一般在定義了乙個型別之後,為了能使用它,必須把這個型別具體化,也就是指定為乙個具體的物件。而建構函式就是從定義出發,建立與定義相對應的物件。用計算機語言來說,光有定義是不能使用,必須通過建構函式來分配記憶體空間給可使用的物件。

8樓:最後的小丁

一般情況下,如果沒有提供任何建構函式,編譯器會在後臺建立乙個預設的建構函式。這是乙個非常基本的建構函式,它只能把所有的成員欄位初始化為標準的預設值。

可以為建構函式提供任意多的過載,只要它們的簽名有明顯的區別即可。

9樓:網友

你可以在建構函式說初始化類所需要的某些資料。

就算你沒有定義建構函式,編譯時候編譯器也會自動幫你生成乙個預設建構函式。

create 和destroy相對應,在建構函式中開闢的空間或者建立的物件在destroy函式中要釋放掉,保證記憶體不洩漏。

比如說類裡面有個變數定義 string str; 你建立物件時如果要這個str有個初始值,就在建構函式里定義str=「初始值」;

以上是我個人見解。

10樓:網友

class a

public void a(引數)

例項化 就是創造乙個這個類方法 它雖然存在 但是呼叫的時候 你不創造怎麼用 還有就是 在 這個類上加個public 直接a. 就可以呼叫了 望採納。

11樓:匿名使用者

建構函式的作用,簡單來說就是初始化,初始化乙個新建的物件。

把你的問題具體化。不知道你的問題重點。)

C建構函式過載的問題,C建構函式和解構函式可以過載嗎

你那不叫重灌,叫語法錯誤。你在定義hujiaoqi類的時候已經實現建構函式的過載了,即一專個是無參的建構函式hujiaoqi 一個是有參的hujiaoqi int 類的建構函式只呼叫一次,而且不管有多少個建構函式,屬只會呼叫其中一個,並且是在定義物件的時候自動呼叫的,具體是呼叫哪個根據定義物件時傳入...

c當建構函式失敗時建構函式內部怎麼處理

1 建構函式想通知外部自己構造失敗,只有拋異常這一個途徑 沒有返回值 2 如果不拋異常,那麼建構函式執行完畢,從語言層面上編譯器認為該物件是正確構造了的,其實構造沒有按預想的進行,所以需要用狀態變數 建構函式引用引數就可以讓外界可以知道構造失敗了。3.如果拋異常標識構造失敗,那麼,所有已經構造好的基...

c 拷貝建構函式的細節問題

拷貝建構函式也是要你自己實現的阿,所以你要自己進行變數賦值了。如果你自己不實現,就給你一個預設的實現,就是所有資料拷過去。拷貝建構函式和賦值操作符不一樣,前者是新建物件,後者是賦值給已有物件。如果你不過載 操作符,編譯器也是給你一個預設的實現,就是把所有資料拷過去。第一個問題,拷貝建構函式函式體的構...