構造方法與靜態static

2021-09-16 18:34:04 字數 1839 閱讀 9786

構造方法

構造方法不能夠建立物件,且構造方法的主要作用是完成物件的初始化工作(如果寫的類中沒有建構函式,那麼編譯器會預設加上乙個無引數且方法體為空的建構函式)。它能夠把定義物件時的引數傳給物件的域。意思就是當建立乙個物件時,這個物件就被初始化。若此建構函式不為空,則會字建立物件時就執行建構函式裡面的**。

class helloworld 

}

若是類中已經有了有參的構造方法,那麼就不會再有無參的構造方法,系統將不會再建立乙個無參的構造方法。用以下的**進行解析:

這段**的執行結果為

現在我將無參的構造方法注釋掉:

執行時便出現了錯誤

因為this()代表的時無參的構造方法,而之前我們說了,當已經有了有參的構造方法時,將不會自動生成無參的構造方法。

靜態static

執行截圖如下

現在我將第8行的p2.country = 「日本」注釋掉,並且再15行的string country的前面加上static關鍵字,如下:

執行結果與之前的一樣,,由此我們可以知道static可以讓資料被共享。

static的特點:

隨著類的載入而載入,也就是當你的類載入是,靜態區的資料也會跟著載入;

優先於物件存在,至於這個的原因就是因為第乙個特點,他是隨著類載入而載入的,自然是比物件優先存在;

被類的的所有物件共享,這是為了節省記憶體;

可以通過類名呼叫,示例如下:

執行結果如下

靜態變數與成員變數之間的不同(靜態變數也叫做類變數,成員變數也叫做物件變數):

1.所屬不同,靜態變數屬於類,成員變數屬於物件;

2.儲存位置不同,靜態變數儲存在靜態區,成員變數儲存在堆記憶體中;

3.記憶體中的出現時間不同,靜態變數是隨著類的載入而載入,隨著類的消失而消失。成員變數是隨著物件的建立而存在,隨著物件的消失而消失;

4.呼叫不同,靜態變數可以直接通過類名來呼叫靜態變數,成員變數則必須通過物件來呼叫;

main方法的格式以及其解析:

如果乙個類的所有方法都是靜態的,我們需要多做一步,就是在構造方法前加上private,也就是私有構造方法,目的是不讓其他的類建立本類的物件,直接用類名.呼叫即可。

static 靜態方法與靜態成員

1 test.h 1 class test 2 此處,static 與 virtual不能共用,此時這裡去掉virtual關鍵字。2 test.h 1 class test 2 test.cpp 1 include 2 include test.h 3 4using namespace std 56...

static 靜態方法

乙個不需要任何主叫物件的方法就是靜態方法。靜態方法需要關鍵字static來宣告於定義,他不需要主叫物件,因為它不屬於物件而是屬於類。靜態方法可以被子類繼承,也可以被重寫,但是不能實現多型性。多型性的實現重點在於動態繫結,每一次在呼叫相應方法的時候都是去動態查詢匹配,靜態方法是在類初次載入的時候就已經...

static靜態方法

static也可以修飾方法,使之成為靜態方法,我們通常用的入口函式,也就是main方法就是乙個靜態方法。注意事項 靜態方法可以直接呼叫靜態變數,不能呼叫非靜態成員變數。public class helloworld 2.可以通過建立類的物件來呼叫非靜態成員 public class hellowor...