C/C++ 初始化几种方式
来源:互联网 发布:mac怎么安装office软件 编辑:程序博客网 时间:2024/06/04 20:11
一 默认初始化
int *pi = new int; //默认初始化,不对 基本内置类型进行初始化所以pi指向一个未初始化的int
string *ps=new string; //默认初始化为空string
默认初始化规则:
1 内置类型,如果未被显示初始化,由值由定义位置决定。
1)定义在任何函数之外的变量被初始化为0
2) 定义在函数内部的内置类型变量不会被初始化
2 类类型,各自决定其初始化对象的方式
函数外部(全局变量),函数内部,都会调用类的构造函数进行初始化
二 直接初始化方式(可以使用传统的花括号(),或c++11引入的{},即使用列表初始化
string s("123") //直接初始化
string s = "123"//拷贝初始化。 编译器把等号右侧的初始值拷贝到新创建对象中。
string s8= string('c',8) //拷贝初始化
等价于
string temp = string('c',8)
string s8 = temp
等价于
string s8('c',8) //直接初始化
三 值初始化(只需在类型名后面跟一对空括号() 即可)
string *ps= new string(); //值初始化为空串
string *ps2 = new string;//直接初始化为空串
int *pi1 = new int();//值初始化为0
int *pi2= new int; //值初始化为 ‘未定义'
1 内置类型 初始化为0
2 类类型,调用构造函数
一段代码 g++/vs 2010对比运行结果
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int i;
int *pi = new int;
int *pi2 = new int();
int *pi3 = new int(1);
cout<<" *pi:"<<*pi<<"i:"<<i<<"*pi2:"<<*pi2<<"*pi3:"<<*pi3<<endl;
}
g++编译器:
root@ubuntu:~/c11# ./a.out *pi:0i:-1074971288*pi2:0*pi3:1
vs2010编译器:
可以检查出 i未初始化局部变量,编译报警告,运行时也遇到错误。 修改i=3之后,*pi依然是未定义的值
- C/C++ 初始化几种方式
- C++:只用初始化列表初始化变量的几种情况
- C经典 结构图初始化三种方式
- C语言几种软件滤波方式
- C语言的几种排序方式
- C#读写EXCEL的几种方式
- 文件打开的几种方式(c/c++/Windows)
- 文件打开的几种方式(c/c++/Windows)
- 文件打开的几种方式(c/c++/win32/mfc)
- C/C++_文件重定向的几种方式
- <c:foreach></c:foreach>嵌套的几种方式
- Objective-C NSString 创建初始化的几种方法
- C语言两种字符串初始化方式的对比
- 【c++】必须在类初始化列表中初始化的几种情况
- 【c++】必须在类的初始化列表中初始化的的几种情况
- C语言 字符数组初始化方式总结
- c语言二维数组初始化的方式
- 几种初始化EHCache的方式
- objective-c数组的四种遍历方法总结
- justep X5入门笔记
- java.net.BindException: Address already in use: bind
- 【Leetcode】ZigZag Conversion
- mybatis操作oracle数据库主键自增(触发器)
- C/C++ 初始化几种方式
- MdiTabControl
- 表视图
- MATLAB 定义结构体数组 并存到mat 文件 读取mat
- Fedora 中使用 Qt开发 记录
- Unity3D
- DVFS--动态电压频率调整
- 如何修改Ubuntu双系统的默认开机启动项
- C/C++头文件一览