中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

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

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

struct和union的對比

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

struct:

寫一個最簡單的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)存對齊的原因,最后用了3*8 = 24字節(jié)

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

union:

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

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

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

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

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

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

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;
};

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

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

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

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

執(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òu)的!!!

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

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

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

直接報錯:

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

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

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

但是會出現(xiàn)一個比較大的陷阱,當這個union中存的不為string的時候

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

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

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

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

http://www.risenshineclean.com/news/43242.html

相關文章:

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