靜態成員函式
在類內,如果將乙個成員變數宣告為static,這種成員稱為靜態成員變數。與一般的資料成員不同,無論例項化多少個物件,都只有乙個靜態資料的拷貝,相當於這個類,所有物件共享
靜態成員變數,在編譯階段就分配空間,物件還沒建立時,就已經有空間了。
1.靜態成員必須在類內宣告,類外初始化
2.靜態成員不屬於某個物件,是某個類所有物件共享的,在為物件分配空間中不包括靜態成員所佔空間。
3.靜態成員變數的生命週期是整個工程。
4.靜態成員可以通過類名或物件名來使用。
class
school
;//靜態成員在類外初始化,初始化時不需要加static
int school::student_n =0;
int school::teacher_n =0;
intmain()
如果乙個類成員,想要實現共享,又要實現不可改變,那就用static const關鍵字修飾。
靜態成員用const修飾是,最好在類內初始化
class
school
;//也可在類外初始化
const
int school::teacher =20;
intmain()
在定義類時,函式前面加static說明函式是靜態成員函式。靜態成員函式的使用方式和靜態變數一樣,在物件沒建立之前,可以通過類名來呼叫。靜態成員函式主要為了訪問靜態成員變數,但不能訪問訪問普通成員變數。
靜態成員函式的意義,不在於資訊共享,資料溝通,而是在於管理靜態資料成員,完成對靜態資料的封裝。
1.靜態成員函式只能訪問靜態變數,不能訪問普通成員變數。
2.靜態成員函式的使用和靜態成員變數一樣。
3.靜態成員函式也有訪問許可權。
4.普通成員函式可以訪問靜態成員變數,也可以訪問非靜態成員變數。
class
school
//靜態成員函式只能訪問靜態成員屬性
static
void
changepeo1
(int num)
private
://靜態成員函式許可權也可以設定為私有
static
void
changepeo2
(int num)
public
:int student;
static
int teacher;};
int school::teacher =0;
//靜態成員變數在類外初始化
intmain()
總結
1.靜態成員必須在類內宣告,類外初始化
2.靜態成員不屬於某個物件,是某個類所有物件共享的,在為物件分配空間中不包括靜態成員所佔空間。
3.靜態成員變數的生命週期是整個工程。
4.靜態成員可以通過類名或物件名來使用。
5.靜態成員用const修飾是,最好在類內初始化。
6.靜態成員函式只能訪問靜態變數,不能訪問普通成員變數。
7.靜態成員函式的使用和靜態成員變數一樣。
8.靜態成員函式也有訪問許可權。
9.普通成員函式可以訪問靜態成員變數,也可以訪問非靜態成員變數。
C 靜態成員變數與靜態成員函式
類的靜態成員有兩種 靜態成員變數和靜態成員函式,語法是在普通成員變數和成員函式前加static關鍵字。0 定義class crect 1 存在原因 靜態成員變數在本質上是全域性變數。乙個類,哪怕乙個物件都不存在,其靜態成員變數也是存在的。靜態成員函式並不需要作用在某個具體的物件上,因此本質上是全域性...
c 靜態成員變數與靜態成員函式
普通成員變數每個物件各自持有乙份,而靜態成員變數只有乙份,被所有同類物件共享 普通成員函式一定是作用在某個物件上的,而靜態成員函式並不具體作用在某個物件上 訪問方式 訪問普通成員時,要通過物件名.成員名的方式,指明要訪問的成員變數是屬於哪個物件的,或要呼叫的成員函式作用於哪個物件 訪問靜態成員時,則...
靜態成員函式與靜態成員變數
此文針對於初學者或者對這一部分掌握不太清楚的人。首先靜態成員函式的宣告 static void setname qstring name 需要在函式的宣告前加static關鍵字。定義的時候和普通成員函式一樣,不需要加static,但是靜態成員函式只能訪問靜態成員變數和靜態成源函式。class dem...