当前位置: 首页 > news >正文

快速做网站的软件营销网站

快速做网站的软件,营销网站,有网站有安全狗进不去了,游戏网站制作模板struct和union的对比 union最开始是C语言中的关键字,在嵌入式中比较常见,由于嵌入式内存比较稀缺,所以常用union用来节约空间,在其他需要节省内存的地方也可以用到这个关键字,写一个简单程序来说明union的用途 struc…

struct和union的对比

union最开始是C语言中的关键字,在嵌入式中比较常见,由于嵌入式内存比较稀缺,所以常用union用来节约空间,在其他需要节省内存的地方也可以用到这个关键字,写一个简单程序来说明union的用途

struct:

写一个最简单的struct结构体:

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

最后得到结果为24

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

由于内存对齐的原因,最后用了3*8 = 24字节

 其在内存布局如下:

union:

将这个结构体改为union类型:

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

最后输出结果为8

union的三个变量公用一段内存,所以同时只能存储一个变量

其内存布局如下:

读取值得本质是取到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;
};

会发现不支持使用string 

因为string不属于POD对象,有构造函数,为了和C语言兼容,所以在旧版中禁止了在union中使用非POD对象(POD全称是PlainOldData,简单理解就是原来在C语言中的原生结构体一类的,不带构造函数等)

不过在后面的C++版本中取消了这个限制

将编译条件改为-std=c++11,编译通过,所以在后面可以在union中使用带构造方法的对象了;

执行如下例子:

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

输出正常结果:

然而这里有一个问题:

这个对象是无法析构的!!!

union中手动添加析构函数及使用析构函数中的陷阱

加上析构函数:

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

直接报错:

这时候,加上析构函数释放内存就可以了:

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

这样就可以在union中使用string等非POD对象了

但是会出现一个比较大的陷阱,当这个union中存的不为string的时候

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

这时候调用delete u时,~U()的~string()就会出错(对着一个int类型使用string的析构):

这就需要另外处理了,比如判空

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

http://www.ds6.com.cn/news/124282.html

相关文章:

  • 广东和深圳的关系重庆seo论坛
  • 常州做沙滩旗的公司网站如何制作一个简单的网页
  • 哪个网站可以做行测题目百度seo营销公司
  • 七米网站开发网址seo优化排名
  • 冠县做网站哪里好百度排名点击器
  • 公司网站开发设计怎么样推广自己的公司
  • 网线制作口诀广州市网络seo外包
  • shopify做全品类网站郑州网站关键词推广
  • 邢台做网站公司重庆seo网络推广关键词
  • 十大wordpress收费主题优化大师官网下载
  • 郑州网站制作公司汉狮竞价托管信息
  • 企业网站备案 淘宝客百度搜索风云排行榜
  • 做淘宝返利网站能挣钱央视新闻今天的内容
  • 网站建设哪家公司便宜seo教程最新
  • 编辑器西安seo外包行者seo
  • 无锡网站建设企业短视频培训要多少学费
  • 网站设计与制作的论文报告百度关键词统计
  • 网站建设与管理课程设计论文今日头条十大新闻
  • 建立网站和推广百度seo自然优化
  • 爬虫做网站相关教程在线检测网站安全
  • 药品包装设计公司seo推广怎么样
  • 网站做404交换友情链接前后必须要注意的几点
  • 纯静态网站是有什么程序做的推广品牌的方法
  • 哪些购物网站用php做的百度搜索推广方法
  • 高端网站定制设计公司百度快照优化公司
  • 青岛做网站企业短视频培训
  • 企业网站改版方案生意参谋指数在线转换
  • flash网站模板新手做网络销售难吗
  • 珠海网站建设官网免费seo排名网站
  • 建设网站要买服务器网络推广工作好干吗