C++小白入门学习1

C++概述

在这里插入图片描述
图形开发工具QT可以跨平台
解释性语言pathon
在这里插入图片描述

C++命名空间 输入输出

命名空间的定义:namesapce名字{变量、函数}
命名空间的使用:
使用作用域限定符:命名空间的名字::变量名或者函数名
使用using关键字导入命名空间:using namespace 命名空间;using 命名空间::变量名或者函数名
命名空间注意事项
不能访问其他源文件的命名空间
当多个源文件的命名空间名字相同时,如果没有出现重复的变量名和函数名,系统会合并两个命名空间

Cin:输入流 cout:输出流 cerr:错误流 clog:日志流 流对象
流运算符: >> 输入 << 输出
Printf:行缓冲:满一行输出或者遇到”\n”
Scanf输入前刷新缓冲区
垃圾问题:getchar() 或者 cin.get()

C++对C的升级

基本语句的升级
for语句:优化循环变量的作用域
条件表达式:可以做左值

关键字的升级
***register关键字***的升级:尽可能的将该变量保存到CPU内部寄存器中,从而省去从内存抓取数据的时间,提高程序的运行效率
//注意事项:只能修饰局部,不能修饰全部变量和函数
register修饰变量,不能通过&获取该变量的地址
Register修饰的变量类型必须是CPU所能够接受的数据类型

Int max = a > b ? a : b
( a > b ? a : b) = 69

const关键字:修饰变量,只读变量
const关键字的升级:const修饰是常量
地址之间的赋值必须是const对const

Auto关键字
C语言auto关键字:自动变量,只是用来说明该变量的作用域;相当于局部变量
C++:auto:类型推导,实现高效率编程

***using关键字***的升级:替代C语言typedef的关键字

***typedef关键字***的作用:给类型重命名的;提高代码可读性、移植性

Using Int = int;//typedef int Int;
Using Len = int;//typedef int Len;

C++对C的升级:类型的升级
引入了bool类型
Bool flag = false;
引入了“引用”
引用:给变量起别名,定义引用必须初始化,一旦绑定就不能再次绑定到其他变量上
作用:解决函数传值和传地址问题;
应用场景:作为函数的形参;作为函数的返回值(函数的调用可以做左值)
常引用:const修饰的引用;绑定常量

C++11引用的分类:左值引用(&):只能绑定左值、右值引用(&&):只能绑定右值
左值:可以取地址可以修改 右值:不能取地址,不能修改
Int num = 5;

Int &l_num = num;//左值引用
Int &&r_num = 5;//右引用
Int &&r_num = std::move(num);

Std::move()将左值转换为右值
为什么要引入右值引用?实现对象移动,解决临时对象拷贝开销的问题;
引用是不是数据类型?(不是)它占不占用内存空间?(运行时不占用内存空间,编译时预留内存空间)!!!!!!!!!!!!!

C++对C的升级:malloc\free
引入了new,delete运算符来替代malloc,free
1.malloc按照字节为单位,new可以初始化
2.malloc不能初始化内存,new可以初始化
3.malloc是函数,new是运算符

C++对C的升级:函数的升级
引入inline关键字修饰函数;用(内存)空间换运行时间
引入默认参数:可以给形参设置默认参数 规则:默认参数右边的参数必须全为默认参数
可以函数重载,可以使用相同的函数名,重载规则:形参的个数,类型或者顺序不同
注意事项:函数返回值不能作为重在条件;默认参数会影响重载条件

作业

思考题:
指针和引用的区别?
什么是对象移动

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值