C++中的默认初始化
c++中涉及到内置类型、复合类型、STL对象、结构体、类等对象,初始化也有很多类型:默认初始化、拷贝初始化、直接初始化。
默认初始化是指未指定变量具体值时,变量自动被初始化。默认初始化存在很多差异,分类总结对于熟练掌握及应用大有裨益!
1.内置类型
默认初始值由定义的位置决定,若不在任何块内,初始化为0,否则未定义,或者说是拥有一个不确定的值。
#include<iostream>
using namespace std;
int oi;
double od;
bool ob;
int main(){
cout<<oi<<endl<<od<<endl<<ob<<endl;
int ii;
double id;
bool ib;
cout<<ii<<endl<<id<<endl<<ib<<endl;
return 0;
}
output:
0
0
0
1570130464
6.95322e-310
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2.复合类型
a.引用,声明时必须初始化,而且无法将引用重新绑定到另一个对象上。
b.指针,未定义。
3.STL对象
视情况而定,一般为空对象,例如 string str,则str是一个空字符串。
4.结构体和类
在初始化问题上,二者并无区别,故仅考虑结构体!
若我们自己没有定义构造函数,编译器会自动创建合成的默认构造函数,而一旦自己定义了,编译器就不会自动创建。
所以如果自己定义了构造函数,最好再定义一个默认构造函数。
默认构造函数,若函数初始值列表或者默认参数值提供了默认值,成员变量将被初始化为相应的值,否则会被初始化为相应的默认值。
合成的默认构造函数有两个问题:
- 对于内置类型或复合类型的变量,可能会初始化为未定义
- 对于该结构体包含自定义类型作为成员变量,如果该自定义类型无默认的构造函数,将无法默认初始化。
————————————————
版权声明:本文为CSDN博主「wangkingkingking」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wangkingkingking/article/details/79346527
C++中的默认初始化相关推荐
- keras模型中的默认初始化权重
权重的初始化,决定了模型训练的起点.一个良好的初始化可以加快训练过程,同时避免模型收敛至局部最小值.为了在训练过程中避免使得权重的变化总沿着同一个方向,我们尽量避免将所有权重都初始化为同一个值,如全0 ...
- pop3服务器协议初始化失败,Exchange2003系统管理器中的默认POP3 虚拟服务器无法自动启动...
Exchange系统 管理器中的默认POP3 虚拟服务器无法自动启动,导致Outlook Express 6.0无法收发 邮件:需要手动启动该服务,有办法让其自动启动吗? 而且Microsoft Ex ...
- C++中的值初始化和默认初始化
1.值初始化 顾名思义,就是用数值初始化变量.如果没有给定一个初始值,就会根据变量或类对象的类型提供一个初始值.对于int类型其值初始化后的值为0. 2.默认初始化:如果定义变量时没有指定初值,则变量 ...
- jvm默认的初始化参数_您是否应该信任JVM中的默认设置?
jvm默认的初始化参数 如今,JVM被认为是智能的. 预期配置不多-只需设置要在启动脚本中使用的最大堆,您就可以进行了. 所有其他默认设置都很好. 大概我们当中有些人误以为. 实际上,在运行时期间发生 ...
- Pytorch的默认初始化分布 nn.Embedding.weight初始化分布
一.nn.Embedding.weight初始化分布 nn.Embedding.weight随机初始化方式是标准正态分布 ,即均值$\mu=0$,方差$\sigma=1$的正态分布. 论据1--查看 ...
- php键顺序初始化,Java类中各成员初始化的顺序
了解Java中类各个成员的初始化顺序是非常重要的,这样你可以对类有全局的认识.不说太多,直接看下面的例子 class Father { static{ System. out.println(&quo ...
- 如何在Angular.js选择框中使用默认选项
本文翻译自:How to have a default option in Angular.js select box I have searched Google and can't find an ...
- 回复:lerit的关于对象中字段的初始化问题
谢谢lerit的对于我的博文<内存探寻1之--值类型和引用类型的内存分配机制>中提到的问题.这里先重述问题: "你好,你的文章写得很好,清晰了很多以前比较模糊的概念,我想提个问题 ...
- c++构造函数成员初始化中赋值和初始化列表两种方式的区别
先总结下: 由于类成员初始化总在构造函数执行之前 1)从必要性: a. 成员是类或结构,且构造函数带参数:成员初始化时无法调用缺省(无参)构造函数 b. 成员是常量或引用:成员无法赋值,只能被初始化 ...
最新文章
- (转)HTTP 协议之压缩
- 技术方案设计的方法论及案例分享
- java模式匹配_用Java匹配模式
- 电脑ip地址设置_路由器动态IP和静态IP上网方式怎么设置【设置教程】
- 做老板的,首先要懂销售,销售什么?
- wifi卡慢延迟高_120平套三没网线,吃鸡延迟只有20ms,网件Orbi RBK50路由真香
- sprintf 函数
- SCP,两台机器互相使用拷贝
- 苏州大学计算机考研大纲2021,2021苏州大学考研参考书目
- 适用于Android的最佳本地音乐播放器
- Android 7.0以上版本 HTTPS 抓包解决方法
- Android 热修复Bugly和Sophix介绍
- mbp touchbar设置_千万不要再买 TouchBar 的 MBP,教训深刻!
- vscode VisualStudio区别
- 加入一个基于GOOGLE的站内搜索引擎
- Android 微光闪烁效果
- 【Spring】Jasper入门
- Kafka-我发的消息都发到哪儿去了?
- 无线网络技术—wimax技术
- 【搬运】SharpPcap的一些例子
热门文章
- 理解关于java反射中类的域及修饰符
- Windows Phone 开发环境的搭建
- 转自JIM Wang:把 isv.config.xml 按钮事件移动到 entity.onload()
- [基础题]4、设计一个家政服务规范: 洗衣服, 扫地, 买菜, 做饭
- Metal之Shading Language Specification(着色语言规范)
- 395. 至少有K个重复字符的最长子串
- 2020\Simulation_1\6.递增三元组
- Python3 关键字nonlocal和global的用法与区别
- Go语言范围(Range)
- java与spss交互,[转载]如何用SPSS做中介效应与调节效应(转)