- 博客(11)
- 收藏
- 关注
原创 多态
多态的本质:形式上,使用统一的父类指针做一般性处理,指向一些对象的成员函数或者数据成员;但实际执行时,这个父类指针可能指向子类对象;那么此时在形式上会调用父类的方法,但是实际上会调用子类的同名方法。例:在此例中,Father类型的指针数组中,分别指向了Father类的对象地址和Son类的对象地址,执行结果如下:通过结果我们可以知道,son1 和 son2 明明调用的是子类对象的方法,最后实现时却调用了Father类的方法。那么问题来了,我们如何才能使Father类的指针指向Son类的方法时
2020-06-16 20:03:19
213
原创 变量的存储类型
变量的存储类型分为四种:自动变量(auto):函数中所有的"非静态局部变量",平时定义变量时就是一种自动变量作用域:块声明方式:块内静态变量(static):static 变量名;局部静态变量:作用域:块; 声明方式:块内,使用关键字 static全局静态变量:作用域:文件内部; 声明方式:所有函数外,使用关键字 static外部变量(extern):extern 变量名;把全局...
2020-04-27 14:52:36
254
原创 动态内存
内存可以简单的分为:栈区、堆区、全局数据区、常量区、代码区栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等。堆区(heap):一般由程序员分配释放,作为动态内存。全局数据区(static):全局变量和静态变量的存储是放在一起的,在程序编译时分配。常量区:存放常量字符串。代码区:存放函数体(包括类的成员函数,全局函数)的二进制代码。由于栈区的大小有限,且空间很小,如...
2020-04-26 19:03:06
177
原创 引用
引用在C++ 里面存在,在C里面不支持。引用就是变量的别名,在名称前面加上 &,例:int a = 10;int &b = a;cout << b <<endl; 输出为 10b = 20;cout << b <<endl; 输出为 20引用可以更改变量的值,它作为变量的别名存在,在一定的场合可以代替指针。引用只能...
2020-04-26 18:25:19
166
原创 指针的应用,加减,const,void,数组指针,指针数组
指针与整数相加减:int age[8] = {…};int *p = &age;数组的本质上就是一个地址,第一个元素的地址就是数组的地址p = p + 2;cout << *p; 输出为数组的第三个元素(指针加减会在数组中左右移动 n 个位置,但地址会变化 n x sizeof ( type ) 个地址:p = p + n --> p原地址 + n x si...
2020-04-22 15:22:44
223
原创 指针的访问,空指针,坏指针
指针的访问:int room = 2;int *r;int **p;r = &room;p = &r;cout << *r <<endl; 输出为 2cout << **p <<endl; 输出为 2*r = 4;cout << *r <<endl; 输出为 4cout <<...
2020-04-22 14:29:22
912
原创 指针
为什么使用指针:1.函数的值传递,无法通过调用函数,来修改函数的实参。2.被调用函数需要提供更多的返回值给调用函数。3.减少值传递时带来的额外开销,提高代码执行效率。指针是什么:指针本质上是一个地址,也是一个变量(是一个特殊变量,也存在地址)。指针的定义:定义时在指针名的前面加一个星号 *p 就是一个一级指针,如果加两个星号 **p 就是定义一个二级指针,二级指针指向一级指针的地址,&...
2020-04-22 14:00:43
94
原创 防御式编程,避免预期之外的错误
防御式编程:对输入的可能性考虑周到,避免预期之外的错误导致程序崩溃。措施:1.对输入进行检查(1)检查输入源(文件,网络,控制台)数据的合法性。(2)检查每一个函数输入参数的合法性。2.对非预期错误使用断言(1)空指针(2)输入或输出参数的值不再预期范围内(3)数组越界断言:#include <assert.h>assert(条件);断言语句执行时会判断条件是...
2020-04-22 13:44:01
151
原创 内联函数,重载函数,递归函数,函数定义
内联函数的主要作用就是可以节省代码运行的时间,这个时间是指栈空间中给内联函数分配栈帧的时间,因为内联函数是不会在栈空间中分配栈帧的。在普通函数的定义前加上 inline 就是将这个普通函数定义为内联函数。当编译器遇到哦内联函数时,就会将整个函数的代码插入调用处,就相当于内联函数的函数体在调用处重新写了一遍,以避免函数调用的开销,从而节省时间。但这会使得调用内联函数的程序变得十分臃肿,会消耗调用函...
2020-04-22 13:14:50
442
1
原创 栈空间
栈空间是内存中的一部分空间,主要用于存储函数和数组等。当定义一个函数或者定义一个数组时,就会在栈空间申请一块区域用于储存该函数或数组。但栈空间的大小有限,当定义的数组大小过大,或定义的函数内存过大时,栈空间会崩溃,程序也会崩溃。在栈空间里面也储存着很多地址,这种地址对外称为栈帧。更早函数的栈帧调用者函数的栈帧被调用函数的栈帧在使用递归函数时,每调用一次递归函数,就会在栈空间内分配一块区...
2020-04-22 13:05:52
792
原创 在 VS2015 中的 getch() 和 strcmp() 用法记录
今天在视频教学中看到 getch() 函数在 VC++2010 中的用法,结果自己在 VS2015 中使用时,也是用同样的方法输入了 getch() 却出现问题,无法通过编译。后来自己找问题出在哪儿,结果发现 VS2015 不能直接使用 getch() :VC++2010:getch();VS2015:_getch();这样使用就没问题了。getch() 这个函数包含在 conio.h...
2020-04-15 14:50:33
1163
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人