靜態成員函式

2022-07-13 20:33:19 字數 1317 閱讀 4065

就是再成員函式 定義前加乙個 static

我們需要了解它的訪問方式以及訪問許可權,以及一些特點

有個博主總結的好

傳送門;

一、靜態成員的特點:

(1)static資料成員在類的內部宣告,但只能在類的外部定義,在類的外部不能指定static,在類的定義時候進行初始化;

(2)static資料成員只能在類的外部進行初始化(特例:當整型const static資料成員被常量表示式初始化時,就可以在類的內部進行初始化,但還需要在外部進行定義)。

(3) static資料成員可以是該成員所屬的類型別,而非static資料成員只能自身類的引用或者指標。

(4)static資料成員可以用作類成員函式的預設實參。

(5)static資料成員的值可以改變。

二、靜態成員和非靜態成員的區別:

(1) 靜態變數使用 static 修飾符進行宣告,在類被例項化時建立,通過類和物件都可以進行訪問;

(2)不帶有 static 修飾符宣告的變數稱做非靜態變數,在物件被例項化時建立,通過物件訪問;

(3) 乙個類的所有例項的同一靜態變數都是同乙個值,同乙個類的不同例項的同一非靜態變數可以是不同的值。

(4) 靜態函式的實現裡不能使用非靜態成員,如非靜態變數、非靜態函式等。

三、靜態成員函式的特點:

(1) static 成員函式沒有 this 形參,它可以訪問所屬類的 static 成員,但不能訪問非 static 成員。

(2)static成員函式既可以在類的內部定義,也可以在類的外部定義,在外部定義時,不能重複指定static保留字。

(3)static成員函式不能宣告為虛函式,不能實現動態繫結

(4)static 成員函式不能宣告為const,因為const是針對this是不是const而言的

(5)建構函式、析構函式不能為靜態函式。

1 #include2

using

namespace

std;34

class

person

5

13static

intage;

14int

no;15

private:16

static

void func()//

這個private在類外不可被訪問到

1720

};21

22int person::age = 20;//

在類的外部定義

2324

void

test()

2530

intmain()

31

靜態成員 靜態成員函式

reference to non static member function must be called sort numbers.begin numbers.end cmp 做演算法題的時候遇到的乙個問題,和成員函式相關,這裡記錄一下備忘。首先上 class solution string p...

靜態成員和靜態成員函式

靜態成員和靜態成員函式 普通成員變數每個物件有各自的乙份,而靜態成員變數一共就乙份,為所有物件共享。靜態成員物件不需要通過物件就能訪問 class crectangle crectangle crectangle int i,int j crectangle crectangle int crect...

靜態成員和靜態成員函式

靜態成員函式的特點 1.static資料成員在類內的內部宣告,但只能在類的外部定義,在類的外部不能指定static,在類的定義時候驚醒初始化 2.static資料成員只能在課的外部進行初始化 特例 當整形const static資料成員被常量表示式初始化,就可以在類內進行初始化,但還需要在外部進行定...