国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

快速做網(wǎng)站的軟件免費(fèi)網(wǎng)絡(luò)空間搜索引擎

快速做網(wǎng)站的軟件,免費(fèi)網(wǎng)絡(luò)空間搜索引擎,包頭公司做網(wǎng)站,網(wǎng)站設(shè)計(jì)企業(yè)聯(lián)系方式內(nèi)容struct和union的對(duì)比 union最開始是C語言中的關(guān)鍵字,在嵌入式中比較常見,由于嵌入式內(nèi)存比較稀缺,所以常用union用來節(jié)約空間,在其他需要節(jié)省內(nèi)存的地方也可以用到這個(gè)關(guān)鍵字,寫一個(gè)簡單程序來說明union的用途 struc…

struct和union的對(duì)比

union最開始是C語言中的關(guān)鍵字,在嵌入式中比較常見,由于嵌入式內(nèi)存比較稀缺,所以常用union用來節(jié)約空間,在其他需要節(jié)省內(nèi)存的地方也可以用到這個(gè)關(guān)鍵字,寫一個(gè)簡單程序來說明union的用途

struct:

寫一個(gè)最簡單的struct結(jié)構(gòu)體:

struct S
{int i;double d;char c;
};
int main()
{S s;cout<<sizeof s<<endl;
}

最后得到結(jié)果為24

int占4位,double占8位,c占1位

由于內(nèi)存對(duì)齊的原因,最后用了3*8 = 24字節(jié)

?其在內(nèi)存布局如下:

union:

將這個(gè)結(jié)構(gòu)體改為union類型:

union U
{int i;double d;char c;
};
int main()
{U u;cout<<sizeof u<<endl;
}

最后輸出結(jié)果為8

union的三個(gè)變量公用一段內(nèi)存,所以同時(shí)只能存儲(chǔ)一個(gè)變量

其內(nèi)存布局如下:

讀取值得本質(zhì)是取到add,按照不同方式進(jìn)行讀取,類似于下面的代碼

u.i =(int)(*add);
u.d = (double)(*add);
u.c = (c)(*add);

union中的string

將編譯條件改為-std=c++03:

union U
{int i;double d;string s;
};

會(huì)發(fā)現(xiàn)不支持使用string?

因?yàn)閟tring不屬于POD對(duì)象,有構(gòu)造函數(shù),為了和C語言兼容,所以在舊版中禁止了在union中使用非POD對(duì)象(POD全稱是PlainOldData,簡單理解就是原來在C語言中的原生結(jié)構(gòu)體一類的,不帶構(gòu)造函數(shù)等)

不過在后面的C++版本中取消了這個(gè)限制

將編譯條件改為-std=c++11,編譯通過,所以在后面可以在union中使用帶構(gòu)造方法的對(duì)象了;

執(zhí)行如下例子:

#include <iostream>
#include <string>using namespace std;union U
{U(int i){_i = i;}U(string s){_s = s;}string _s;int _i;
};int main()
{U *u =new U("hello");cout<<u->_s<<endl;
}

輸出正常結(jié)果:

然而這里有一個(gè)問題:

這個(gè)對(duì)象是無法析構(gòu)的!!!

union中手動(dòng)添加析構(gòu)函數(shù)及使用析構(gòu)函數(shù)中的陷阱

加上析構(gòu)函數(shù):

int main()
{U *u =new U("hello");cout<<u->_s<<endl;delete u;
}

直接報(bào)錯(cuò):

這時(shí)候,加上析構(gòu)函數(shù)釋放內(nèi)存就可以了:

	~U(){_s.~string();}

這樣就可以在union中使用string等非POD對(duì)象了

但是會(huì)出現(xiàn)一個(gè)比較大的陷阱,當(dāng)這個(gè)union中存的不為string的時(shí)候

int main()
{U *u =new U(12);delete u;
}

這時(shí)候調(diào)用delete u時(shí),~U()的~string()就會(huì)出錯(cuò)(對(duì)著一個(gè)int類型使用string的析構(gòu)):

這就需要另外處理了,比如判空

	~U(){if(!_s.empty(){_s.~string();}}

http://aloenet.com.cn/news/43242.html

相關(guān)文章:

  • 360客服做網(wǎng)站電話網(wǎng)絡(luò)工程師培訓(xùn)班要多少錢
  • 在線做章網(wǎng)站aso蘋果關(guān)鍵詞優(yōu)化
  • 哪家建設(shè)網(wǎng)站長春網(wǎng)站建設(shè)平臺(tái)
  • 如何自己做攝影網(wǎng)站萬能搜索引擎網(wǎng)站
  • 微店網(wǎng)站鏈接怎么做seo外包是什么意思
  • 手工做衣服網(wǎng)站網(wǎng)站引流推廣怎么做
  • 手機(jī)h5制作小程序百度手機(jī)seo軟件
  • WordPress自定義計(jì)算小紅書seo排名
  • 重慶品牌網(wǎng)站建設(shè)電商自學(xué)網(wǎng)
  • wap手機(jī)網(wǎng)站源碼企業(yè)網(wǎng)站的作用有哪些
  • wordpress 更新很慢微信公眾號(hào)seo
  • 西安做的好的網(wǎng)站公司南昌seo全網(wǎng)營銷
  • 怎么創(chuàng)建網(wǎng)站 免費(fèi)的官網(wǎng)設(shè)計(jì)公司
  • 新企業(yè)在哪里做網(wǎng)站好關(guān)鍵詞推廣優(yōu)化排名品牌
  • wordpress文章頁面菜單優(yōu)化大師win7
  • 女女做的網(wǎng)站目前最新推廣平臺(tái)
  • 南通網(wǎng)站開發(fā)招聘按效果付費(fèi)的網(wǎng)絡(luò)推廣方式
  • html5手機(jī)網(wǎng)站開發(fā)區(qū)別百度快照推廣
  • 建設(shè)網(wǎng)站必備條件長春網(wǎng)站建設(shè)推廣
  • 大于二高端網(wǎng)站建設(shè)新手seo入門教程
  • 網(wǎng)站標(biāo)簽怎么做重慶網(wǎng)站網(wǎng)絡(luò)推廣
  • 淄博北京網(wǎng)站建設(shè)手機(jī)百度搜索引擎入口
  • 做網(wǎng)站收費(fèi)標(biāo)準(zhǔn)哪個(gè)平臺(tái)可以免費(fèi)打廣告
  • 網(wǎng)站在建設(shè)時(shí)不容忽略的一些細(xì)節(jié)最權(quán)威的排行榜網(wǎng)站
  • 網(wǎng)站建設(shè)中模板下載武漢百度開戶代理
  • 百度搜索不到asp做的網(wǎng)站天津搜狗seo推廣
  • 網(wǎng)站建設(shè)哪個(gè)空間比較好網(wǎng)站怎么優(yōu)化到首頁
  • 上海簡站商貿(mào)有限公司seo基礎(chǔ)理論
  • 做任務(wù)傭金網(wǎng)站源碼互聯(lián)網(wǎng)營銷培訓(xùn)平臺(tái)
  • 公眾號(hào)編輯 wordpress魔貝課凡seo