關於c 類靜態成員分析

2021-07-23 21:31:41 字數 1175 閱讀 2255

c++類靜態成員特點:

1、在類中申明,在類外別處定義

2、該類所有例項,都共享類外定義儲存單元

3、類例項不會為它分配空間去引用類外定義的儲存單元

4、在訪問類靜態成員時,是採用指令指標在偏移方式實現的

如下原始碼含有靜態成員a,

#include

using namespace std;

class shared 

void show();

} ;int shared::a; // define a

void shared::show()

int main()

(gdb) p sizeof(shared)

$5 = 4

(gdb)  

(gdb) 

(gdb) 

(gdb) 

(gdb) p &shared::a

$6 = (int *) 0x601174

(gdb)  

(gdb) 

(gdb) 

(gdb) 

(gdb) disassemble /m shared::set

dump of assembler code for function shared::set(int, int):

11void set(int i, int j) 

0x00000000004008f2 <+0>:

push   rbp

0x00000000004008f3 <+1>:

mov    rbp,rsp

0x00000000004008f6 <+4>:

mov    qword ptr [rbp-0x8],rdi

0x00000000004008fa <+8>:

mov    dword ptr [rbp-0xc],esi

0x00000000004008fd <+11>:

mov    dword ptr [rbp-0x10],edx

120x0000000000400912 <+32>:

pop    rbp

0x0000000000400913 <+33>:

ret    

end of assembler dump.

C 類靜態成員與類靜態成員函式

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

C 類靜態成員與類靜態成員函式

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

C 類靜態成員與類靜態成員函式

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