最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中的類的大小詳解

 更新時間:2022年03月27日 11:07:20   作者:想做后端的前端  
這篇文章主要為大家詳細(xì)介紹了C++中的類的大小,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

一、普通類的大小

#include<iostream>

using namespace std;
class MyClass
{
public:
	MyClass(){
		int i = 0;
		float f = 0.01f;
	};
	int getI(){
		return i;
	}
	int getF(){
		return f;
	}
private:
	int i;
	float f;
	//靜態(tài)變量實(shí)際上是其全局變量,它存儲在全局/靜態(tài)存儲區(qū),不占對象空間
	static int staNum;
};
int MyClass::staNum = 2;
int main()
{
	MyClass myclass;
	cout << "myclass的大小" << sizeof(myclass) << endl;
	return 0;
}

在這里插入圖片描述

我們可以看到,在創(chuàng)建類的對象中,真正占據(jù)??臻g的只有兩個成員變量,分別為4個字節(jié)。靜態(tài)成員變量實(shí)際上與全局變量一起存儲在全局存儲區(qū),而成員函數(shù)則與其他函數(shù)一樣存在于代碼區(qū)。

二、空類的大小

#include<iostream>

using namespace std;
class MyClass
{
public:
	MyClass(){};
private:
};

int main()
{
	MyClass myclass;
	cout << "myclass的大小" << sizeof(myclass) << endl;
	return 0;
}

在這里插入圖片描述

在使用類的指針的時候,如果類的的大小為0,那么排在一起的幾個空類地址都是一樣的話,我們又怎么知道是哪個呢?

三、自動填充類或者結(jié)構(gòu)體的大小

#include<iostream>

using namespace std;
struct MyStruct1
{
	bool b1;
	bool b2;
	int i1;
};
struct MyStruct2
{
	bool b1;
	int i1;
	bool b2;
};
struct MyStruct3
{
	bool b1;
	short s1;
};

int main()
{
	MyStruct1 s1;
	MyStruct2 s2;
	MyStruct3 s3;
	cout << "MyStruct1的大小" << sizeof(s1) << endl;
	cout << "MyStruct2的大小" << sizeof(s2) << endl;
	cout << "MyStruct3的大小" << sizeof(s3) << endl;

	return 0;
}

在這里插入圖片描述

當(dāng)我們按照不同的的順序排列變量的時候會發(fā)現(xiàn),類的大小是不盡相同的。第一種情況,MyStruct中的兩個布爾連在一起,如果后面沒有變量,編譯器會自動填充2個字節(jié);而現(xiàn)在后面還有一個整形i,整形跨越了兩個4字節(jié),在讀取整形的時候需要兩個4字節(jié),因此編譯器會在這種情況下也會在i1填充2個字節(jié),從而是i1在下一個字節(jié)開始。對于第二種情況,MyStruct2中由于兩個布爾類型被整形隔開,我們需要兩次填充。第三種情況,MyStruct3中由于short只有兩個字節(jié),因此只需要填充一個字節(jié)。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容! 

相關(guān)文章

  • 淺析C語言中typeof關(guān)鍵字用法

    淺析C語言中typeof關(guān)鍵字用法

    typeof關(guān)鍵字是C語言中的一個新擴(kuò)展。在linux內(nèi)核源代碼中廣泛使用。接下來通過本文給大家分享C語言中typeof關(guān)鍵字用法,需要的朋友參考下
    2017-02-02
  • C語言實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲完整代碼

    C語言實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲完整代碼

    大家好,本篇文章主要講的是C語言實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲完整代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • C++基礎(chǔ)入門教程(八):函數(shù)指針

    C++基礎(chǔ)入門教程(八):函數(shù)指針

    這篇文章主要介紹了C++基礎(chǔ)入門教程(八):函數(shù)指針,本文講解了函數(shù)原型和函數(shù)定義、const限定符與指針、函數(shù)的指針參數(shù)、為什么要使用指針參數(shù)等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • C語言中的搜索算法詳細(xì)解讀

    C語言中的搜索算法詳細(xì)解讀

    這篇文章主要介紹了C語言中的搜索算法詳細(xì)解讀,如果用樹構(gòu)建一個搜索樹,層層搜索關(guān)鍵字(的一個字母),搜索到后就是需要的描述,就會節(jié)約很多時間,需要的朋友可以參考下
    2023-10-10
  • C++類靜態(tài)成員與類靜態(tài)成員函數(shù)詳解

    C++類靜態(tài)成員與類靜態(tài)成員函數(shù)詳解

    靜態(tài)成員不可在類體內(nèi)進(jìn)行賦值,因?yàn)樗潜凰性擃惖膶ο笏蚕淼?。你在一個對象里給它賦值,其他對象里的該成員也會發(fā)生變化。為了避免混亂,所以不可在類體內(nèi)進(jìn)行賦值
    2013-09-09
  • C語言中單目操作符++、–的實(shí)例講解

    C語言中單目操作符++、–的實(shí)例講解

    C語言的操作符共分為算術(shù)操作符,移位操作符,位操作符,賦值操作符,單目操作符,關(guān)系操作符,邏輯操作符,條件操作符,逗號表達(dá)式,下表引用、函數(shù)調(diào)用和結(jié)構(gòu)成員這10大類,這篇文章主要給大家介紹了關(guān)于C語言中單目操作符++、–的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • C++ string格式化輸出方式

    C++ string格式化輸出方式

    今天小編就為大家分享一篇C++ string格式化輸出方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • C語言字符串函數(shù)操作(strlen,strcpy,strcat,strcmp)詳解

    C語言字符串函數(shù)操作(strlen,strcpy,strcat,strcmp)詳解

    大家好,本篇文章主要講的是C語言字符串函數(shù)操作(strlen,strcpy,strcat,strcmp)詳解,感興趣的同學(xué)趕快來看一看吧
    2021-12-12
  • C++ std::make_unique和std::make_shared用法小結(jié)

    C++ std::make_unique和std::make_shared用法小結(jié)

    本文主要介紹了C++ std::make_unique和std::make_shared用法,使用std::make_unique和std::make_shared能夠簡化動態(tài)分配內(nèi)存和構(gòu)造對象的過程,提高代碼的安全性和可讀性,感興趣的可以了解一下
    2023-11-11
  • C語言經(jīng)典順序表真題演練講解

    C語言經(jīng)典順序表真題演練講解

    程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進(jìn)傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關(guān)系由它們的存儲順序自然表示
    2022-04-04

最新評論

娄底市| 兰西县| 诏安县| 绍兴市| 宁化县| 南部县| 兴义市| 封丘县| 贡觉县| 巴中市| 长汀县| 乌兰察布市| 泰和县| 如皋市| 凤阳县| 上虞市| 东乌珠穆沁旗| 祥云县| 得荣县| 昌邑市| 沂南县| 阜南县| 阿合奇县| 鄯善县| 尼木县| 龙井市| 鄂尔多斯市| 稷山县| 建水县| 南丰县| 电白县| 罗源县| 中山市| 图片| 饶河县| 南平市| 海盐县| 兴山县| 栾川县| 濮阳县| 宿州市|