新数据类型
1、bool类型,布尔型就是逻辑型:
(1)占用内存是1个字节;
(2)计算机中非0表示成立,只有0或者指针空表示不成立;
(3)一般充当函数返回值或者开关;
(4)正常输出只有0和1;
(5)C++中有专有的赋值ture和false;
#includeusing namespace std; int main() { bool num=122; cout< 注意:boolalpha是用true和false的方式打印bool类型
2、指针的NULL在C++中改为nullptr。·
3、引用类型&:类型& 别名=要起别名的东西
(1)引用的底层是用指针实现的,但是理解为起别名会更好
(2)定义引用类型时必须有初始值对象(必须为左值)
(3)基本引用、常引用(右值引用)#includeint main() { //基本引用 int a=1; int& b=a;//此处b就是a的另一个名字,a就是b,b就是a //常引用 int& c=1;//此处直接报错,在C++中常量要求更严格 const int& c=1;//第一种写法:const修饰,这样才不会报错 int&& x=1;//第二种写法:右值引用,常量就是右值 //右值引用:只能给右值起别名,不能给左值起别名 return 0; } 注意:我们需要清楚,在C++中常量要求更严格
例如:#includeusing namespace std; void printstr(char* str) { cout< 4、引用的基本用途
(1)函数参数(防止拷贝本产生)#includeusing namespace std; void modifynum(int a) { a=1001; } void modifynumA(int& a)//int& a=num(实参) { a=1001; } void printRightValue(int&& a) //右值引用 { a += 11; //可以增加一个可以修改的功能 cout << a << endl; } void printRight(const int& a) { //a += 11; //常引用不能修改 cout << a << endl; } int main() { int num=1; modifynum(num);//此过程产生拷贝本 cout< (2)函数返回值(增加左值使用):不能返回局部变量的引用
#includeusing namespace std; int num=1001; int getData() { return num; } int& getValue() { return num; } int main() { //首先我们需要清楚的是:返回值就是一个值,这个值只能是右值 //getData() = 1001; 错误,不能把一个值赋值给另一个值,不能当做变量使用 getValue() = 0;//这里可以理解为返回引用就是返回变量本身 cout << num << endl;//此处打印为0 return 0; } 5、自动推断类型auto类型: 必须根据赋值的数据推断类型,不能直接推断。
#includeusing namespace std; int mian() { auto a=1; auto b;//错误:auto不能定义变量 return 0; }



