C++寒假学习DAY1

C语言输入输出库函数

#include<stdio.h>

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

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

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

cin标准输入设备

示例:

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

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

错误示例

cout标准输出设备

示例:

cin<<a<<" "<<ch<<endl,把a插入,然后插入空格,最后插入ch,注意endl实际上是一个方法,将执行一个\n的操作,相当于进行了一个回车

错误示例

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

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

类型& 引用变量名=

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

&&逻辑与

&按位与

&a取地址

此处&为引用

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

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

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

a是常量,自身的值不可改变,失去了原有的意义,

在函数不存在时,不可引用,引用作为函数的形参,可以通过形参的改变去改变实参的值

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

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

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

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

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

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

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

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

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

 运行结果12,45,56,0,0

 5.函数的重载

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

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

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

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

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

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

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

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

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

 

typedef重命名规则:

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

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

宏替换:

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

此处错误,不是宏的替换,是重命名规则。*和变量名结合,不适合类型名结合。

 7.new/delete和malloc/free区别

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

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

释放内存:delete指针变量名

类和对象:

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

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

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

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

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

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

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

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

成员函数的定义:

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值