【C#】建構函式疑問點總結
前言
在學習C#的過程中,建構函式中的很多知識細節我感覺還是有必要總結一下的。
問題總結
一、建構函式的作用是什麼?
建構函式的主要作用是在建立物件(宣告物件)時初始化物件,一個類被定義時至少要有一個建構函式,如果定義類時沒有宣告建構函式,則系統會提供一個預設的無參建構函式。
二、如何理解“子類不繼承父類的建構函式,但子類預設呼叫父類的建構函式”?
在這裡我們用程式碼來為大家呈現:
這裡執行完畢後的結果為:
所以我們從結果上可知,在例項化子類Student時,先是呼叫了父類的建構函式,然後再呼叫了子類的建構函式。這就是“子類不繼承父類的建構函式”的意思。而“子類不繼承父類的建構函式”指的是子類的建構函式與父類的建構函式之間沒有“重寫”和“覆蓋”關係;只有“呼叫”關係,也就是例項化子類時先呼叫父類的建構函式,再呼叫子類的建構函式。也因為是呼叫關係,而且是預設建構函式,預設呼叫父類建構函式,我們可以理解為:public Person()==public Student():base()
三、為什麼在例項化子類時,子類要先呼叫父類再呼叫子類
因為子類繼承了父類,要想例項化子類,則必須先構造出父類,這樣才能構造出子類,才能例項化。
相關推薦
【C#】建構函式疑問點總結
前言 在學習C#的過程中,建構函式中的很多知識細節我感覺還是有必要總結一下的。 問題總結 一、建構函式的作用是什麼? 建構函式的主要作用是在建立物件(宣告物件)時初始化物件,一個類被定義時至少要有一個建構函式,如果定義類時沒有宣告建構函式,則系統會提供一個預設的無參建構函式。 二、如何理
【C/C++】建構函式 constructor
對於一個class,可以定義多種建構函式,比如 class A { public: // your constructor A // your constructor B void Print() {std::cout<<valu
【C++】物件函式的覆蓋、過載、多型
覆蓋 Coverage 在基類中定義了一個非虛擬函式,然後在派生類中又定義了一個同名同參數同返回型別的函式,既是覆蓋 在派生類物件上直接呼叫這個函式名,則只會呼叫派生類中的同名函式 #include <iostream> using namespace std;
【C++】inline函式 && C和C++的相互呼叫
一、inline函式 (佔用太大空間) 在編譯時處理。呼叫點把程式碼直接展開 注意* 是以程式碼膨脹為代價 當函式堆疊的開銷>函式執行的開銷(建議使用inline函式) 一般寫在標頭檔案下 inline函式  
【 C 】初識函式指標
函式指標,顧名思義,也就是指標,不過這個指標是指向函式的指標。 接下來的一個宣告更有趣,但也更容易讓人疑惑: int (*f)(); 確定括號的含義是分析這個宣告的一個重要步驟。這個宣告有兩個括號,每對的含義各不相同。第2個括號是函式呼叫操作符,第1個括號只起到聚
【C++】子函式返回結構體的程式碼 及 字串常量傳入子函式的指標實現
說明: 1. 下面的子函式 getStu 裡,傳入了三個引數: 字串指標 char * name 整型變數 int k_year; char * k_sex; 2. 當把字串作為引數傳遞給子函式時,主程式中可以使用字串常量,但子函式的形參只能使用字元型指標 char
【C#】— 基礎函式、運算子和表示式
從前人(學習完這個專案的人)那裡聽說傳智播客是北京最大計算機培訓班黑馬的前身,感覺對他的興趣又深了。只要對它有了興趣自然學的就會快了。看C#視訊有一段時間了,小楊老師講課很有意思,一點也不枯燥,幽默風趣還有一點點自戀哈哈哈,好像他快禿頂了。 對於C#視訊就像是我才來提高班學
【C++ 】 format 函式詳解
Format是一個很常用,卻又似乎很煩的方法,以下是它的完整概貌,以供大家查詢之用:一、字串首先看它的宣告:function Format(const Format: string; const Args: array of const): string; overload;事實上Format方法有兩個種形式
【C++】成員函式過載二元和一元運算子
過載雙目運算子時,運算子函式中應該具有兩個引數,若運算子函式作為類的成員函式(當運算子過載函式作為類的成員函式時,要求運算元左邊必須是一個物件,而函式的引數可以是同類的物件也可以是普通的變數),則只需要一個引數。 雙目運算子 雙目運算子就是具
【 C 】作為函式引數的多維陣列
我們都知道一維陣列作為函式引數的情況,作為函式引數的一維陣列名——實際傳遞的是指向陣列第一個元素的指標。 多維陣列名作為函式引數的傳遞方式和一維陣列名相同——實際傳遞的也是指向第一個元素的指標。 但是,兩者之間不同的是,多維陣列的每個元素本身就是另外一個數組,(例如二位陣
【C++】類函式呼叫this
再一次面試中,被問到,函式呼叫時是怎麼知道物件的成員資訊的,用vs除錯了一把:#include "stdafx.h" #include <string> #include <iostr
【C++】accumulate函式的用法(STL)
在標頭檔案#include <numeric> 裡(但是我用的時候在PAT裡面不寫標頭檔案似乎也沒關係……)主要是用來累加容器裡面的值,比如int、string之類,可以少寫一個for迴圈比
Java基礎【02】建構函式
作用: 建立物件時呼叫的函式。可以給物件初始化,建立物件都必須通過建構函式初始化。可知第一:用於建立物件;第二:用於初始化物件。 一個類中,如果沒有定義過建構函式,該類中會預設一個空參
【C++】模板函式及模板類
常用模板類的情況#include<iostream> using namespace std; //模板函式,一個模板引數 template<typename T> T fun1(T a,T b){ if(a>b) {
C++各種建構函式的寫法【轉】
(轉自:https://blog.csdn.net/baiyq369/article/details/54926983) 建構函式 ,是一種特殊的方法 。主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中 。特別的一個類可以有
1、【C++】類&物件/建構函式/拷貝建構函式/操作符過載/解構函式
一、C++類 & 物件 C++ 在 C 語言的基礎上增加了面向物件程式設計,C++ 支援面向物件程式設計。類是 C++ 的核心特性,通常被稱為使用者定義的型別。 類用於指定物件的形式,它包含了資料表示法和用於處理資料的方法。類中的資料和方法稱為類的成員。函式在
【C++】拷貝建構函式
目錄 拷貝建構函式 拷貝建構函式的呼叫 預設的拷貝建構函式 深度拷貝 看完類的建構函式後,再來了解下拷貝建構函式。 拷貝建構函式 拷貝建構函式是一種特殊的建構函式。 (1)它是建構函式,所以函式名就是類名,沒有返回值; (2)它是特殊的建構函式,引
【C++】c++中的六個預設函式——建構函式
類的6個預設的成員函式包括: 建構函式、解構函式、拷貝建構函式、賦值運算子過載函式、取地址操作符過載、const修飾的取地址操作符過載。(但是重點講前四個) 建構函式(可以過載) 在C++中,有一種特殊的成員函式,它的名字和類名相同,沒有返回值,不需要使用者顯
【C++】利用建構函式對類物件進行初始化
一、物件的初始化 每一個物件都應當在它建立之時就有就有確定的內容,否則就會失去物件的意義。 class Time { int hour = 0; int min = 0; int sec = 0; }; 這種是錯誤的,類並不是一個實體,並不佔儲存空間,顯然無處容納
【c++】=過載,報錯:沒有合適的複製建構函式
不想看太多的朋友看這句就行了:在你的複製建構函式作為引數傳進去的那個物件前加個const. 是這樣的,在寫機器學習作業的時候,遇到了很多矩陣演算法,為了處理上的方便,我寫了一個矩陣類Matrix,如下