成员变量和成员函数分开存储
生活随笔
收集整理的這篇文章主要介紹了
成员变量和成员函数分开存储
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
首先來說結(jié)論:
? ? ? ? 1.在C++中,類內(nèi)的成員變量和成員函數(shù)分開存儲
? ? ? ? 2.只有非靜態(tài)成員變量才屬于類的對象上
空類(類中上面對象都沒沒有)占用內(nèi)存大小為:1
#include <iostream>
#include <string>
using namespace std;class Person
{};void test01()
{Person p;cout << "空類的內(nèi)存大小:" << sizeof(p) << endl;
}int main()
{test01();system("pause");return 0;
}
?
可能會有人有這個疑問,為什么空類占用內(nèi)存不是0呢,這是因為:
????????sizeof(A) > 0 是因為標(biāo)準(zhǔn)規(guī)定完整對象的大小為正數(shù)。因為每個內(nèi)存都有它獨有的代號 (首地址)
只有非靜態(tài)成員變量才屬于類的對象上的數(shù)據(jù):
在類中添加一個成員變量:int m_A;
#include <iostream>
#include <string>
using namespace std;class Person
{
private: //屬性 一般私有int m_A; //非靜態(tài)成員變量
};void test01()
{Person p;cout << "空類的內(nèi)存大小:" << sizeof(p) << endl;
}int main()
{test01();system("pause");return 0;
}
因為非靜態(tài)成員變量? 屬于類的對象上
靜態(tài)成員變量它不屬于類的對象上面的數(shù)據(jù):
#include <iostream>
#include <string>
using namespace std;class Person
{
private:int m_A;static int m_B;
};void test01()
{Person p;cout << "空類的內(nèi)存大小:" << sizeof(p) << endl;
}int main()
{test01();system("pause");return 0;
}
這里順便說一下,靜態(tài)成員變量需要在類內(nèi)聲明,類外初始化,當(dāng)然我因為沒使用那個變量就沒聲明
印證了那句靜態(tài)成員變量不屬于類對象的數(shù)據(jù)
?
類內(nèi)的成員變量和(成員函數(shù)和靜態(tài)成員函數(shù))分開存儲:
#include <iostream>
#include <string>
using namespace std;class Person
{
public:int Swap(){}static double Fun() {}private:int m_A;static int m_B;
};void test01()
{Person p;cout << "空類的內(nèi)存大小:" << sizeof(p) << endl;
}int main()
{test01();system("pause");return 0;
}
運(yùn)行結(jié)果不出所也是:4
?
總結(jié)一下:
類內(nèi)的成員變量和成員函數(shù)分開存儲!
無論是靜態(tài)成員變量、靜態(tài)成員函數(shù)、非靜態(tài)成員函數(shù) 都不屬于類對象上的數(shù)據(jù)。
只有非靜態(tài)成員變量屬于類對象上的數(shù)據(jù)!
加油吧,騷年!
總結(jié)
以上是生活随笔為你收集整理的成员变量和成员函数分开存储的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 请问这部电影的名字
- 下一篇: C++ 中this指针的用途