C++学习笔记08
来源:互联网 发布:linux 开机卡在进度条 编辑:程序博客网 时间:2024/06/05 05:32
1:union和struct的区别:什么是联合(union)?
union是一种特殊的类,也是一种构造类型的数据结构。在一个union内可以定义多种不同的数据类型, 一个被说明为该union类型的变量中,允许装入该union所定义的任何一种数据,这些数据共享同一段内存,已达到节省空间的目的(还有一个节省空间的类型:位域)。 这是一个非常特殊的地方,也是union的特征。另外,同struct一样,联合默认访问权限也是公有的,并且,也具有成员函数。
union与结构的区别? union与“结构”有一些相似之处。但两者有本质上的不同。在结构中各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和(空结构除外,同时不考虑边界调整)。而在union中,各成员共享一段内存空间, 一个联合变量的长度等于各成员中最长的长度。应该说明的是, 这里所谓的共享不是指把多个成员同时装入一个联合变量内, 而是指该联合变量可被赋予任一成员值,但每次只能赋一种值, 赋入新值则冲去旧值。
一般情况下用不到,对于一些嵌入式设备,内存空间十分稀缺才可能用到。
2:在c++程序中调用被C编译器编译后的函数,为什么要加extern“C”?
C++语言支持函数重载,C语言不支持函数重载,函数被C++编译器编译后在库中的名字与C语言的不同。假设某个函数原型为:
void foo(int x, inty);
该函数被C编译器编译后在库中的名字为: _foo , 而C++编译器则会产生像: _foo_int_int 之类的名字。为了解决此类名字匹配的问题,C++提供了C链接交换指定符号 extern “C”。
3:c++怎样让返回对象的函数不调用拷贝构造函数?
拷贝构造函数前加 “explicit” 关键字,因为普通构造函数能够被隐式调用,而添加explicit的构造函数只能被显式调用。
在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换,可以参考这个链接。
- C++/C学习笔记
- Objective-c学习笔记08-NSNumber
- Objective-C 学习笔记 08 - Property List
- iOS学习笔记08--Objective-C反射
- 【C/C++】STL学习笔记
- C/C学习笔记/导言
- C/C学习笔记/结构
- 【c/c++】学习笔记1
- C学习笔记1
- TPC-C学习笔记
- c语言学习笔记
- C语言学习笔记
- C语言学习笔记
- 学习笔记之c
- C#-学习笔记
- Objective-C学习笔记
- C++PRIMER学习笔记
- C学习笔记
- Centos Web 压力测试工具ApacheBench (ab)独立安装
- (11)java代码实现回复video类型的消息
- mysql 亿级查询优化(分页)
- 超好用的Bootstrap框架
- better-scroll的参数和方法
- C++学习笔记08
- Bootstrap — Glyphicons字体图标
- Ubuntu14.04安装配置深度网络SSD
- Android XML绘图Shape阴影
- 170903 WarGames-Behemoth(1)
- AngularJS框架
- CentOS下安装jdk
- 解析最外层为数组的json串
- Spring BcryptPasswordEncorder Log Rounds参数说明