初始化(C++primer5th学习笔记)
来源:互联网 发布:kali linux安装到u盘 编辑:程序博客网 时间:2024/06/07 00:25
初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来替代。(P39)
1、默认初始化
(1)对于内置类型(int),定义在任何函数之外的变量被初始化为0,而定义在函数体内部则是未定义,不能对其进行访问。通过new生成的int类型对象也是未定义。
(2)对于类类型(string),由其默认构造函数初始化。
2、直接初始化和拷贝初始化
拷贝初始化:使用等号初始化变量执行的是拷贝初始化,把等号右侧的初始值拷贝到新创建的对象中,int i=0;
直接初始化:如果不使用等号则执行的是直接初始化。
3、值初始化
如果只提供容器容纳数量而略去初始值,会创建一个值初始化的元素初值。
vector<int> i(10); //10个元素,每个都初始化为0
vector<string> s(10); //10个元素,每个都是空string对象
列表初始值还是元素数量?
一般用圆括号表示的是元素的数量,提供的值是用来构造对象的。
用花括号表示的是尽量当成元素初始值的列表,表示列表初始化对象。
vector<int> v1(10); //10个元素,每个都初始化为0vector<int> v2{10}; //1个元素,值为10vector<int> v3(10,1); //10个元素,每个都是1vector<int> v4{10,1}; //两个元素,值分别是10和1
4、列表初始化
使用列表初始化在存在丢失信息的风险时,编译器会报错。即需要进行类型转换的时候不能使用列表初始化。
注意事项:
对于定义了自己的构造函数的类类型,要求值初始化是没有意义的。但对于内置类型,值初始化的内置类型对象有着良好的定义的值,而默认初始化的对象的值是未定义的。
int *p1=new int; //未定义int *p2=new int(); //值初始化为0
0 0
- 初始化(C++primer5th学习笔记)
- 文本查询程序(C++primer5th)
- 文本查询程序再探(C++primer5th)
- C++primer5th 课后题13.58
- 第一遍C++Primer5th读完感
- Object-c学习笔记十一-----对象初始化
- C++Primer5th课后题10.11、10.13
- C++primer5th课后题12.6、12.14、12.19
- C++primer5th课后题12.26、12.28
- C++primer5th模拟vector之StrVec类
- Objective-C 学习笔记(二) 类声明,定义,实例,初始化
- Object-c学习笔记(一):对象的声明及初始化
- Objective-C学习笔记(二十二)——初始化方法init的重写与自定义
- 【C Prime Plus】学习笔记,Chapter 10,数组初始化问题
- Object-c基础编程学习笔记-对象初始化
- 嵌入式学习笔记4-C语言环境初始化
- Objective-C学习笔记第十章对象初始化
- Object-c基础编程学习笔记-对象初始化
- 自己记录,筛选我喜欢的宝宝
- elasticsearch 时间查询语法
- weblogic部署更新会多出来一个工程
- Android 以图找图功能
- One-vs-Rest算法介绍及Spark MLlib调用实例(Scala/Java/Python)
- 初始化(C++primer5th学习笔记)
- 学jQuery笔记
- 深入浅出JMS(一)--JMS基本概念
- 【Dijkstra模板】codeforces715B Complete The Graph(最短路径)
- 学习TCP/IP协议
- LibEvent中文帮助文档--第12章【Evbuffer IO实用功能】
- 学生信息管理系统优化(一)
- HTML权威指南知识笔记(二)
- unity3D-游戏/AR/VR在线就业班 C#入门属性学习笔记