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