1. 程式人生 > 其它 >成員變數和成員函式是分開儲存的

成員變數和成員函式是分開儲存的

技術標籤:C++面向物件

#include<iostream>
#include<string>
using namespace std;
class Person {
public:

};
void test01() {
	Person p;
	cout << "空物件所佔記憶體空間" << sizeof(p) << endl;
}
int main() {
	test01();
	return 0;
}
//C++編譯器會給每個空物件也分配一個位元組空間,是為了區分空物件佔記憶體的位置,每個空物件也要有一個獨一無二的記憶體空間。

在這裡插入圖片描述
在類中加入一個非靜態成員

#include<iostream>
#include<string>
using namespace std;
class Person {
public:
	int m_A;//非靜態成員變數
};
void test01() {
	Person p;
	cout << "空物件所佔記憶體空間" << sizeof(p) << endl;
}
int main() {
	test01();
	return 0;
}


在這裡插入圖片描述
在類中再加入一個靜態成員

#include<iostream>
#include<string> using namespace std; class Person { public: int m_A;//非靜態成員變數 static int m_B; }; void test01() { Person p; cout << "空物件所佔記憶體空間" << sizeof(p) << endl; } int main() { test01(); return 0; }

在這裡插入圖片描述
發現執行結果還是和上次一樣,原因是靜態成員變數不屬於類物件,非靜態成員變數屬於類物件

再加入非靜態成員函式結果還是和上次一樣,表明函式也不屬於類物件,進而表明,成員函式和成員變數是分開放的