C++寒假学习DAY1

C语言输入输出库函数

#include

1.C++输入输出库函数

#include//标准库,不能带有.h

using namespace std;//使用命名空间

cin标准输入设备

示例:

cin>>a>>ch,把数据放入缓冲区依次提取,从键盘提取数据给a,再然后给ch

两个大于号中间没有空格表示提取符,每一个数据之前都要有提取符。

错误示例

cout标准输出设备

示例:

cin<

错误示例

两个小于号中间没有空格表示插入符

2.引用:(1.引用的概念  2.常引用  3.引用做形参)

类型& 引用变量名=

&在C语言中的使用方法:

&&逻辑与

&按位与

&a取地址

此处&为引用

ps:(1)当我们定义引用时,必须给予初始化(2)在定义引用时,没有所谓的空引用(3)没有引用的引用,即没有别名的别名;

&在C++中的使用方法:

常引用:可以使能力收缩,但是不能是能力变大。

C++寒假学习DAY1_第1张图片a是常量,自身的值不可改变,失去了原有的意义,

C++寒假学习DAY1_第2张图片在函数不存在时,不可引用,引用作为函数的形参,可以通过形参的改变去改变实参的值

 3.inline为了解决频繁调用的小函数大量消耗栈空间(栈内存)(为了现场保护和现场修复,inline是一种内联函数),内联函数的引用减少了现场保护和现场修复的时间,以及调用函数要调用栈帧以及调用结束的清栈等,减小了时间开销。

内联函数的处理方式:函数的调用点直接代码展开。

内联函数和普通函数的区别:函数的处理流程是先进行实参压栈然后处理函数体。内联函数没有开辟和清栈,函数体直接在调用点代码展开,内联函数体代码简单,不包含复杂的结构控制语句。

内联函数和static修饰的函数区别:ststic只是将函数的符号变成局部符号,函数的处理机制和普通函数相同,都有函数的开栈和清栈开销。而内联函数没有函数的开栈和清栈开销。

内联函数和宏的区别:inline函数的处理时机是在编译阶段,有安全检查和类型检查。宏的处理时机是在预编译阶段,没有任何检查机制,只是更简单的文本替换。inline函数是一种更安全的宏。

ps:inline函数一般写在头文件中;inline函数只在Release版本生效,在Debug版本无效;inline一般只是给编译器一个建议,具体的操作是由编译器决定的。inline函数是基于现实的,不是基于申明的。

4.函数参数的默认值开销:默认值给发从右到左依次给,不能跳着给error。

当给实参时,是从左到右依次赋予实参。

默认值是在编译过程中确定的。如果有实参则替换。

 C++寒假学习DAY1_第3张图片运行结果12,45,56,0,0

 5.函数的重载

函数的原型包括函数返回类型,函数名,形参列表

名字重命名(名字粉碎技术)

“?Max@@YAH1H2H3@Z”(?命名开始标志,Max函数名,@@YA调用约定,H1返回类型的缩写H2第一个参数H3第二个参数,@Z名字结束)

C++寒假学习DAY1_第4张图片

 _stdcall调用约定:(返回类型不一样,不能函数重载)

1.以“?”标识函数名开始,后跟函数名

2.函数名以后以“@@YG”标识参数表的开始,后跟参数表

3.参数表以代号表示X---void,D---char,E---unsigned char,F---short

 Ps:函数重载依据;返回类型不同的函数是否可以进行重载(有缺省或者默认值不可以重载);参数带有默认值的情况;为什么C++可以进行函数重载而C语言不可以;名字粉碎;extern关键字的使用(1.干预编译方器,用C++还是C语言2.c语言中告诉函数这是一个外部函数)。

6.模板函数(处理函数重载) 模板在编译时产生代码。不是替换过程,是类型重命名过程。

C++寒假学习DAY1_第5张图片

 C++寒假学习DAY1_第6张图片

 

typedef重命名规则:

C++寒假学习DAY1_第7张图片

 int的重命名规则和函数捆绑在一起,当我进行编译代码时Type是整型

C++寒假学习DAY1_第8张图片

重命名成double,产生处理char类型的代码

C++寒假学习DAY1_第9张图片

 

 

宏替换:

C++寒假学习DAY1_第10张图片

 Type是整型,所以p是整型指针类型,(a=>type)a的类型是 ,(b=>type) b的类型是 。

C++寒假学习DAY1_第11张图片此处错误,不是宏的替换,是重命名规则。*和变量名结合,不适合类型名结合。

 7.new/delete和malloc/free区别

在C++中堆内存的分配和释放是通过new和delete来完成的。

开辟内存:类型*指针变量名=new类型(初始化数值);

释放内存:delete指针变量名

类和对象:

类是一组相关树形(变量)和行为(方法)的集合,是一个抽象概念的产物。

对象是该类事物的具体表现,具体存在的实体。

成员变量是对象的属性,属性的值确定对象的状态。

成员函数是对象的方法,确定对象的行为。

状态和行为是对象的主要属性。

封装是面向对象程序设计最基本的特性,把数据(属性)和函数(操作)合成一个整体,在这计算机的世界中是用类与对象实现的。

访问限定符有三种:私有的 共有的 保护的。如果类体起始点无访问说明符,默认私有。访问说明符的私有和保护体现了类具有封装性。

类是一种数据类型,定义时不为类分配存储空间,所以不能对类的数据成员初始化。类中的任何数据成员也不能使用关键字extern,auto或者register限定其存储类型。

成员函数的定义:

前面只对成员函数作了一个声明(函数的原型),并没有对函数进行定义。函数定义常在类的说明之后进行,格式:回值类型 类名::函数名(参数表)  {......}//函数体  ::z作用域运算解析符

空类的大小是1,在c++里有空间即可操作。有空间不一定有对象。有对象一定要有空间。

你可能感兴趣的:(c++,开发语言,后端)