C/C++ 初始化几种方式
2013-12-15 12:52
267 查看
一 默认初始化
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++编译器:
vs2010编译器:
可以检查出 i未初始化局部变量,编译报警告,运行时也遇到错误。 修改i=3之后,*pi依然是未定义的值
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++成员变量的初始化方式
- 1.java数组的几种声明和初始化的方式
- 1、如何配置数据连接,ActiveRecord初始化的几种方式!
- C++多态有哪几种方式?
- c++中必须在类初始化列表中初始化的几种情况
- c++中各类型成员变量的不同方式的初始化
- vector的几种初始化及赋值方式
- 【c++】必须在类的初始化列表中初始化的的几种情况
- C/C++里自带提供的整数进制转换的几种方式
- 【ZZ】区分C++的几种类型转换方式(温习温习~)
- C++有哪几种情况只能用初始化列表,而不能用赋值?
- C++:几种callable实现方式的性能对比
- Unreal Engine 4 C++ FString操作的几种方式
- C++回调机制的几种实现方式
- C++ 中的几种初始化
- Oracle几种清除数据的方式,在平台用别的医院数据库做初始化时有用
- C++ 几种方式的类型转换
- C++中实现回调机制的几种方式[转]
- C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
- C++ 判断文件的几种方式