默认初始化
当我们不给变量指定任何值的时候,C++的标准当中为不同类型的变量赋予了初值。
这也是最为常见的情况,但其实并不是非常推荐
#include <string>
int a;//a = 0
char a;//a = 0,这里并不是a = '0',代表的并不是0这个字符,而是空白
string a;//a同样是一个空串
double a;//a = 0
int *p;//p = NULL, p的默认值是一个空指针
直接初始化
这其实是一种非常通用的初始化方法,但主要是用在一些类的初始化当中,例如之后的博客会提到的初始化列表等,使用的就是直接初始化的方法。
#include <string>
int a(1);//a = 1
char a('1');//a = '1'
string a("1");//a = "1"
double a(3.14);//a = 3.14
int *p(a);//p是一个指向a的int类型的指针
拷贝初始化
最开始接触到编程的时候,我们经常使用到的变量初始化的方法,特别注意和直接初始化之间的区别,编程语言当中用到等号的时候通常都是一种将一端的值拷贝到另一端的情况,无论是地址还是所保存的真值,可以通过这个小技巧来进行记忆。
#include <string>
int a = 1;//a = 1
char a = '1';//a = '1'
string a = "1";//a = "1"
double a = 3.14;//a = 3.14
int *p = &a;//p是一个指向a的int类型的指针,特别注意这里的取地址符