成員函數和成員變量分開存儲
隻有非靜态成員變量才屬于對象上。
每個空對象占用的記憶體空間為:1。c++編譯器會給每個空對象也配置設定一個記憶體空間,是為了區分空對象占記憶體的位置。每個空對象應該有一個獨一無二的空間。
函數也不會占用對象空間,所有對象共享一個函數執行個體。
#include<iostream>
using namespace std;
class Person {
public:
int m_a;
};
class Person1 {
public:
int m_a;
static int m_b;
};
void test() {
Person p;
Person1 p1;
cout << sizeof(p) << endl;
cout << sizeof(p1) << endl;
}
int main() {
test();
system("pause");
return 0;
}
複制
此時輸出:
1
4
4
說明了:空對象也是有1位元組的空間。靜态成員變量并不屬于特定的某一個對象,同理,靜态成員函數也不屬于某一個對象。進一步來說:所有對象共享一個成員函數執行個體。