靜態成員資料和靜態成員函式

2021-09-08 13:56:49 字數 1650 閱讀 7836

在c++中,經常可以看到static開頭的語句,那麼這就是在定義靜態成員資料或者靜態成員函式了。

類中的某個資料一旦被定義為靜態成員資料,那麼這個資料就可以被由這個類建立的任何物件共享。這個資料就是靜態成員資料。

注意:一般,類只是定義了其結構、型別,而建立物件時才會分配記憶體空間。比如乙個student類,其中有乙個成員資料totalnumber,且由這個類建立了10個物件,則就會開闢十個相應的空間儲存物件,且totalnumber被存在了這個十個物件,處於不同的位置,然而,totalnumber是相同的,如果儲存了10份,就會造成浪費,所以出現了靜態成員資料的概念。但是,這個靜態資料成員只能在類之外進行初始化,在類的裡面是不能進行初始化的。 且對靜態成員資料訪問時,既可以通過建立的物件訪問(使用 . 訪問符),也可以使用這個類來進行訪問(使用 :: 進行訪問),舉例如下:

#include #include 

#include

using

namespace

std;

class

student

student(

string name = "

wayne

", int age = 22, string *** = "

male")

private

:

string

name;

intage;

string

***;

};int student::totalnumber = 0

;int

main()

如上所示:

靜態成員函式不能訪問類中的一般函式和資料,只能訪問類中的靜態成員函式,靜態成員變數,或者類外的其他函式,這是因為靜態成員函式中是沒有this指標的。

如下所示:

#include #include 

#include

using

namespace

std;

class

student

student(

string name = "

wayne

", int age = 22, string *** = "

male")

static

intgettotal()

private

:

string

name;

intage;

string

***;

};int student::totalnumber = 0

;int

main()

可以看到: 上面的程式中,我們可以使用靜態成員函式gettotal訪問靜態成員資料,並且,同樣的,靜態成員函式是屬於類的,無論建立了多少物件,都只會占用乙份記憶體。且可以通過兩種方式來進行訪問。

靜態資料成員和靜態成員函式

靜態資料成員屬於類 準確地說,是屬於類中乙個物件集合 而不像普通資料成員那樣屬於某一物件,因此可以使用 類名 訪問靜態的資料成員。例如上面例子中的 student count。靜態資料成員不能在類中進行初始化,因為在類中不給它分配記憶體空間,必須在 類外的其它地方為它提供定義。一般在 main 開始...

靜態成員和靜態成員函式

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

靜態成員和靜態成員函式

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