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