C++_从C到C++
1.写在前面
stdio.y=strand(标准)、io=input&&output
iostream=input and output stream(流)
cout=printf
endl=\n
(C语言里也有C++不包含的东西)
2.正文内容
2.1新类型
2.1.1布尔类型:
格式:
bool 变量名=ture;
bool 变量名=fause;
(这里bool的实际应用还需要后面补充)
2.1.2引用类型:
a.说明:
引用是已定义的变量的别名
主要作用是函数传参
b.定义格式:
int a;
int &name=a;
c.指针与引用的区别
引用与所指向对象具有相同的值和地址
(指针只同所指对象有相同的值,但是地址不同)
必须在声明引用时将其初始化,而不像指针一样先声明在初始化
引用一旦初始化成功其指向不可改变,而指针的指向可以改变
d.引用用作函数参数的方法
int fun(int & a);(c++P258)
2.2函数
2.2.1重载(函数重载或函数多态):
函数重载使得编程过程中可以使用多个重名函数
C++使用上下文来确定要使用的重载函数的版本
函数特征标:两个函数参数的数目和类型及参数的排列顺序是否一致
在函数只有个声明时,传参过程如果不匹配则会发生强转,如果有过个重载函数都近似则会发生报错;
类型的引用和类型本身看成是同一个特征标
2.2.2内联:
a.内联说明:
函数在调用的过程中方式如同阅读时查看脚注(给调用函数创建地址,然后跳转到调用函数处,执行调用函数代码,然后跳转回原函数),这个过程中存在一定的跳转时间,为了解决跳转过程中存在跳转时间这个问题,而出现内联函数
对于内联代码,程序无需跳到另一个位置处执行代码在跳转回来,而是在源位置创建代码副本,直接执行
内联函数的运行速度比常规函数稍快,但是需要占用更多内存
应该有选择地使用,因为内联所节省的时间有限,除非该函数经常被调用
VS中,即使是在代码中定义了内联函数,在编译过程中编译器也可能不选择内联操作
内联不能用在递归、
b.内联函数定义方式:
inline fun(参数1,参数2);
在主函数中书写方式为直接使用fun函数
2.2.3缺省:
缺省就是给函数的参数附默认值,调用的时候没有参数就使用默认值
eg.void fun(int x,int y=2,int z=3);
fun(5,1);//调用的时候,z没有传参就使用默认值
缺省的过程只能从右到左缺省
如果同时存在函数声明和函数定义,只需函数声明写缺省就可
同时有重载和缺省要注意函数二义性的问题(程序不知道是缺省了,还是重载了)
2.3新的内存申请方式——new 和 delete
new 和 delete必须配对使用
2.3.1定义格式:
a. new格式:
tpyeName* pointer_name=new typeName;//new将找到一个长度为int的内存块,并返回该内存块的地址
b. delete格式:
delete pointer_name;
2.3.2 数组申请动态内存及释放内存的方式
申请:typeName *pointer_name=new type_name[num_elements];
释放:delete [] pointer_name;
2.4新的输入输出方式——cin 和 cout
格式:
#include<iostream>
using namespace std;
int main()
{
int x; //定义变量
cin>>x; //输入变量
cout<<"x的值是"<<x<<endl; //打印内容
cin.get();
return 0;
}
3.说明
动态内存中访问数组元素其它内容的方式同C语言
变量是在编译时分配的有名称的内存,而指针是为可以通过直接访问内存提供的别名
指针真正的作用在于在运行阶段分配未命名的内存以存储值
const类常与搭配,而这里还没有涉及
函数列表也称为函数特征标
函数间传递参数的方式有三种:
1.定义一个具有返回值的函数,函数只能返回计算结果,其传入的参数不变
2.定义函数时,其参数定义为引用,这样在执行函数的过程中,传递的参数的值也会发生改变
3.定义函数时,其参数定义为指针,这样在执行函数的过程中,传递的参数的值也会发生改变
(具有1.2两点不同的内在原因是,引用在传递参数的过程中,接受参数的变量名是原来参数的别名,是在原来的基础上进行的修改)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 浅谈 Android 7.0 多窗口分屏模式的实现
- Kotlin中的对象表达式和对象声明的具体使用
- Android 实现为点击事件添加震动效果
- 解决Android studio Error:(30, 31) 错误: 程序包 不存在的问题
- AndroidQ 沙箱适配多媒体文件(小结)
- Bitcron 主题 Berry(简约wordpress主题)
- Android 实现图片转二进制流及二进制转字符串
- Android 如何实现exclude aar包中的某个jar包
- android 实现控件左右或上下抖动教程
- Android Studio引入FFmpeg的方法
- Android Studio 中获取屏幕宽度实例
- Android studio 生成带Kotlin文档的实现方式
- 基于Android FileProvider 属性配置详解及FileProvider多节点问题
- Android 通过API获取数据库中的图片文件方式
- android尺子的自定义view——RulerView详解