C++与C的区别(三)

C++与C的区别(三)

新数据类型

1、bool类型,布尔型就是逻辑型:

(1)占用内存是1个字节;
(2)计算机中非0表示成立,只有0或者指针空表示不成立;
(3)一般充当函数返回值或者开关;
(4)正常输出只有0和1;
(5)C++中有专有的赋值ture和false;

#include<iostream>
using namespace std;
int main()
{
bool num=122;
cout<<num<<endl;//此处打印为1
num=ture;
cout<<boolalpha<<num<<endl;//此处打印为ture
//注意:这里的boolalpha用true和false方式打印bool类型
return 0;
}

注意:boolalpha是用true和false的方式打印bool类型

2、指针的NULL在C++中改为nullptr。·

3、引用类型&:类型& 别名=要起别名的东西

(1)引用的底层是用指针实现的,但是理解为起别名会更好
(2)定义引用类型时必须有初始值对象(必须为左值)
(3)基本引用、常引用(右值引用)

#include<iostream>
int 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++中常量要求更严格
例如:

#include<iostream>
using namespace std;
void printstr(/*const*/char* str)
{
 cout<<str<<endl;
}
int main()
{
printstr("iloveyou");//此时传参是错误的,因为char* str需要用const修饰才可以;
char* str1[]="iloveyou";
printstr(str1);//此处传入的是变量也可以
所以想要传入变量和常量就要用const修饰
return 0;
}

4、引用的基本用途
(1)函数参数(防止拷贝本产生)

#include<iostream>
using 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<<num<<endl;//此处打印出来是1
modifynumA(num);
cout<<num<<endl;//此处打印为1001
/*任何类型的传参都是用赋值的方式传参*/
printRightValue(11);//传右值引用,在常量去并没有改变,而是通过接口拷贝到另一个地方
printRight(11);
return 0;
}

(2)函数返回值(增加左值使用):不能返回局部变量的引用

#include<iostream>
using 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类型: 必须根据赋值的数据推断类型,不能直接推断。

#include<iostream>
using namespace std;
int mian()
{
auto a=1;
auto b;//错误:auto不能定义变量
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值