靜態成員及方法

2021-06-28 01:56:43 字數 1993 閱讀 8007

靜態成員不可在類體內進行賦值,因為它是被所有該類的物件所共享的。你在乙個物件裡給它賦值,其他物件裡的該成員也會發生變化。為了避免混亂,所以不可在類體內進行賦值

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。

靜態資料成員的用途之一是統計有多少個物件實際存在。

靜態資料成員不能在類中初始化,實際上類定義只是在描述物件的藍圖,在其中指定初值是不允許的。也不能在類的建構函式中初始化該成員,因為靜態資料成員為類的各個物件共享,否則每次建立乙個類的物件則靜態資料成員都要被重新初始化。

靜態成員不可在類體內進行賦值,因為它是被所有該類的物件所共享的。你在乙個物件裡給它賦值,其他物件裡的該成員也會發生變化。為了避免混亂,所以不可在類體內進行賦值。

靜態成員的值對所有的物件是一樣的。靜態成員可以被初始化,但只能在類體外進行初始化。

一般形式:

資料型別類名::靜態資料成員名=初值

注意:不能用引數初始化表對靜態成員初始化。一般系統預設初始為0。

靜態成員是類所有的物件的共享的成員,而不是某個物件的成員。它在物件中不占用儲存空間,這個屬性為整個類所共有,不屬於任何乙個具體物件。所以靜態成員不能在類的內部初始化,比如宣告乙個學生類,其中乙個成員為學生總數,則這個變數就應當宣告為靜態變數,應該根據實際需求來設定成員變數。

複製**

**如下:

#include "iostream"

using namespace std;

class test

};

int test::num = 10;

int main(void)

1、static成員的所有者是類本身和物件,但是多有物件擁有一樣的靜態成員。從而在定義物件是不能通過建構函式對其進行初始化。

2、靜態成員不能在類定義裡邊初始化,只能在class body外初始化。

3、靜態成員仍然遵循public,private,protected訪問準則。

4、靜態成員函式沒有this指標,它不能返回非靜態成員,因為除了物件會呼叫它外,類本身也可以呼叫。

靜態成員函式可以直接訪問該類的靜態資料和函式成員,而訪問非靜態資料成員必須通過引數傳遞的方式得到乙個物件名,然後通過物件名來訪問。

複製**

**如下:

class myclass ;

int myclass::sum=0;       //定義並初始化靜態資料成員

myclass::myclass(int a,int b,int c)

void myclass::getsum() {

cout <<"sum=" 《由上例可知,非靜態成員函式可以任意地訪問靜態成員函式和靜態資料成員。

非靜態成員函式myclass(int a,int b,int c)和getsum()都訪問了靜態資料成員sum。

靜態成員函式不能訪問非靜態成員函式和非靜態資料成員。

關於靜態成員函式,可以總結為以下幾點:

出現在類體外的函式定義不能指定關鍵字static;

靜態成員之間可以相互訪問,包括靜態成員函式訪問靜態資料成員和訪問靜態成員函式;

非靜態成員函式可以任意地訪問靜態成員函式和靜態資料成員;

靜態成員函式不能訪問非靜態成員函式和非靜態資料成員;

由於沒有this指標的額外開銷,因此靜態成員函式與類的全域性函式相比速度上會有少許的增長;

呼叫靜態成員函式,可以用成員訪問操作符(.)和(->)為乙個類的物件或指向類物件的指標呼叫靜態成員函式,當同一類的所有物件使用乙個量時,對於這個共用的量,可以用靜態資料成員變數,這個變數對於同一類的所有的物件都取相同的值。靜態成員變數只能被靜態成員函式呼叫。靜態成員函式也是由同一類中的所有物件共用。只能呼叫靜態成員變數和靜態成員函式。

靜態成員及非靜態成員 區別

靜態成員及非靜態成員解說 對於非靜態資料成員,每個類物件都有自己的拷貝。而靜態資料成員被當作是類的成員。無論這個類的物件被定義了多少個,靜態資料成員在程式中也只有乙份拷貝,由該型別的所有物件共享訪問。也就是說,靜態資料成員是該類的所有物件所共有的。對該類的多個物件來說,靜態資料成員只分配一次記憶體,...

靜態成員方法與靜態成員變數

package com.statickeyword public class staff staff int id,string name void printcountry 二 靜態成員函式 a 只可訪問靜態成員變數 public static void main string args 執行結果...

C 靜態成員變數及靜態成員函式

靜態成員變數 含義 在類的成員變數前加上static關鍵字,就是把該變數宣告為靜態成員變數。特點 1 靜態成員變數在記憶體中只有乙份,所有的類物件全域性共用它。2 在類中對成員變數加上static關鍵字,進行變數的型別申明。在內的外部對其進行初始化。初始化方法 資料型別 類名 變數名 初始化值 3 ...