- 博客(25)
- 收藏
- 关注
原创 继承和多态
一继承和多态1总结:类和对象:体现了OOP封装和隐藏的思想2.继承:体现了OPP的代码的复用和重用3.组合:一个类定义对象是另一个类的成员对象 a part of ....4继承:一个类的定义:[ 访问限定符] 已定义的过的类 a kind of ....二.派生类继承什么东西1.派生类继承了和基类除了构造函数和析构函数外的所有成员基类的名字和派生类的名字相同是因为派
2018-04-22 22:43:03
218
原创 类的对象的定义以及指向类成员及成员方法的指针
一.对象定义1.sizeof(class)给对象开辟内存2.成员变量(成员对象)的初始换=》当前类的构造函数的初始化列表种指定注意一点:成员变量(对象)的初始化顺序是:他们定义的顺序,而和初始化列表顺序无关3 根据对象定义的方式,调整合适的构造函数问题:有哪些成员变量必须在初始化列表中初始化:1 引用的变量2 const 常量三种面向对象的成员方法:一 类的普
2018-04-21 12:44:07
1415
原创 对象创建的效率问题
#includeusing namespace std;#include// 20180419.cpp : 定义控制台应用程序的入口点。///*1.this指针有什么作用?2.构造函数和析构函数有什么作用?Test t1;t1.Test();Test t2(10);Test t3(10, 10);3.什么是浅拷贝和深拷贝?怎么预防浅拷贝问题?Test
2018-04-20 14:14:18
460
原创 C++类和对象以及析,构构造函数及拷贝构造函数
三 名字空间作用域 namespace C 语言的作用域1局部作用域2全局作用域C++1局部作用域2全局作用域3类作用域Namespace 解决全局作用域名字的冲突Namespae MyName std{int gdata = 10 ;Int sum (int a,int b){Return a+d;}}Using MyN
2018-04-14 17:42:36
257
原创 引用及c++动态内存开辟new malloc
一引用:如果&左边有类型则为引用,没类型则为取地址。1引用必须初始化2引用定义是引用了谁就不能在改变3 引用只有一级引用没有多级(c++11有左引用和右引用)4 引用变量,永远访问的是引用内存(不能访问4字节的指针内存)结论:1 引用必须初始化2引用初始化的值必须能取地址例如;int &b = a; Int &b =10; 错误1普通的引用不能引
2018-04-14 17:31:51
421
原创 c c++ 中const volatile 的用法及默认转换表
一.C C++ 编译器默认类型的转换表 double |unsigned | long | int 横向箭头:无条件转换纵向箭头:从下向上进行转化二.constConst 修饰一个变量,表示该变量从此以后,不能再作左值。 C语言的const1 .不一定要初始化2.const修饰的变量
2018-04-12 13:27:04
302
原创 函数调用栈
例如:int sum(int a,int b){int tmp=0;tmp=a+b; return tmp;}int main(){int x =10;int y=20;int ret =sum(x,y);printf("ret=%d\n");return 0;}如图:首先找到调用main函数的函数栈的底地址,移动eb
2018-04-02 15:29:46
567
原创 编译 ——链接
一个源文件到可执行文件的一个过程预编译 编译 汇编 链接1 预编译:处理所有带有#所有条件的预编译指令 (并展开所有的宏定义) 例如 #if # elif #endif等 处理#include等预编译指令,将包含的头文件插入预编译指定的位置 删除所有注释 添加行号和文件名的标识
2018-03-31 12:39:34
193
转载 断言(ASSERT)的用法
断言(ASSERT)的用法 它居然是个宏,并且作用并非“报错”。 在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种“契约式编程”,在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个if语句:if(假设成立){ 程序正常运行;}else{ 报错&&终止程序!(避免由程序
2017-12-06 11:03:00
224
转载 malloc.realloc.calloc函数的区别
(1)C语言跟内存分配方式从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.在栈上创建 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限.从堆上分配,亦称动态内存分配
2017-11-15 19:26:32
197
转载 关于静态变量与非静态变量及函数的区别
静态变量:静态变量使用 static 修饰符进行声明在所属类被装载时创建通过类进行访问所属类的所有实例的同一静态变量都是同一个值非静态变量:不带有 static 修饰符声明的变量称做非静态变量在类被实例化时创建通过对象进行访问同一个类的不同实例的同一非静态变量可以是不同的值。对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。
2017-11-07 17:14:47
403
转载 指针和引用的区别
1.总结一下指针和引用的相同点和不同点:★不同点:指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。●指针是一个实体,而引用仅是个别名;●引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终”,指针可以“见异思迁”;●引用没有const,指针有const,const的指针不可变;●引用不能为空,指针可以为空;●“sizeof 引用”
2017-10-24 17:04:00
282
原创 数组以及数组与指针的关系及函数返回值的
数组的定义:int[ ]; //[ ]内不能为空,必须是整数且不能为负数。在编译时[ ]的数必须是给定的整形变量。例如[ 7/2 ]对[7/2.0]错。void main{int n=10;int ar[n]; //这种定义是错误的,在编译时n是一个变量是一个不确定的变量,在运行时10才会赋值给n.}void main{int ar[ ]={2,3,4,4
2017-10-20 21:11:12
400
原创 指针
指针就是指向变量的地址:int *p (*是指声明的意思—声明一个P指针)及如果没有指向的东西,称为野指针。如何杜绝野指针:int*p=&a; int*p=null 把NULL赋值给P;指针的分类:*p 一级指针**a 二级指针***b 三级指针...一级指针指向变量的地址,
2017-10-18 12:19:11
194
转载 函数的定义与声明的区别
C语言编译系统是由上往下编译的.一般被调函数放在主调函数后面的话,前面就该有声明.不然C由上往下的编译系统将无法识别。正如变量必须先声明后使用一样,函数也必须在被调用之前先声明,否则无法调用!函数的声明可以与定义分离,要注意的是一个函数只能被定义一次,但可以声明多次。函数声明由函数返回类型、函数名和形参列表组成。形参列表必须包括形参类型,但是不必对形参命名。这三个元素被称为函数原型,函数原
2017-10-16 20:02:05
30214
转载 C语言中break,continue,goto,return语句区别
一。break 1.break语句形式:break; 2.break语句功能:A. switch语句中,break语句会终止其后语句的执行,退出switch语句。B. 使一个循环立即结束,也就是说在循环中遇到break语句时,循环立即终止,程序转到循环体后的第一个语句去继续执行。 3. 注:A. break语句在循环中使用时,总是与if一起使用,当条件满
2017-10-13 11:25:18
623
原创 作业2017.10.12
#includeint main(){ int num=444,ge,shi,bai,qian,wan,sum; printf("输入一个0-99999的整数"); scanf("%d",&num); if(num>9999) {sum=5;} else if(num>999) {sum=4;}
2017-10-12 17:27:25
252
转载 inline函数
我们看下面的函数,函数体中只有一行语句: double Average(double total, int number){ return total/number; } 定义这么简单的函数有必要吗?实际上,它还是有一些优点的:第一,它使程序更可读;第二,它使这段代码可以重复使用。但是,它也有缺点:当它被频繁地调用的时候,由于调用函数的
2017-10-12 12:57:38
280
转载 隐式转换
1隐式转换隐式类型转换所谓隐式类型转换就是在编译时由编译程序按照一定规则自动完成,而不需人为干预。因此,在表达式中如果有不同类型的数据参与同一运算时,编译器就在编译时自动按照规定的规则将其转换为相同的数据类型。C语言规定的转换规则是由低级向高级转换。
2017-09-29 20:23:49
271
转载 gets和scanf的区别
1 gets函数原型:char * gets ( char * str );功能为:从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。注意:不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢
2017-09-29 20:01:03
422
原创 char ch[10]={"yhping"}; char ch2[10]={'y','h','p','i','n','g'}; char *str = "yhping"; 区别是
1.char ch[]={"yhping"};char ch2[]={'y','h','p','i','n','g'};char *str = "yhping"; 区别是什么。 (1) strlen测的是实际是字符串中的实际长度不包括‘\0’,sizeof测的是计算机实际分配的空间大小。 (2) char ch[10] ="yhping" 是
2017-09-29 19:10:54
1020
转载 #define PINT int * typedef int * SINT; 这两的区别及define与undefine用法
1.typedef是为原有类型声明一个新的名字,“typedef int* PINT_TYP ”就是声明了一个新的数据类型,数据类型名为PINT_TYP,其功能与int *是完全一样的,也就是说,PINT_TYP与int *本质上完全相等(在程序中遇到PINT_TYP不是简单地替换)。而“#define PINT_DEF int*”是简单的宏定义,在预处理阶段就已经将PINT_DEF替换为
2017-09-29 11:07:22
805
转载 define,const和enmu的区别
1.const:修饰的数据类型是指常类型,常类型的变量或对象的值是不能被修改的,类似于只读属性; 关于const的一些常用的使用情况,如下所示:常变量:const 数据类型 符号常变量 = 数值 ,如:const float a=2.18;指针常量:数据类型 *const 指针变量=变量名,如:NSString* const p="abc"; const修饰的是指针变量,而
2017-09-27 12:40:35
317
转载 tulun.9.26 汇编寄存器的应运与寻址
32位CPU所含有的寄存器有:数据寄存器(EAX、EBX、ECX和EDX)变址和指针寄存器(ESI和EDI)指针寄存器(ESP和EBP)段寄存器(ES、CS、SS、DS、FS和GS)指令指针寄存器(EIP)标志寄存器(EFlags) 1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。
2017-09-26 15:42:10
265
原创 基本类型转换规则和sizeof的用法
一.大范围数据向小范围转换时的规则:1.在转换时和自身的类型有关和目标类型无关,,有符号的扩充符号位,无符号的扩充0.#includeint main(){ char c = 128; unsigned char uc = 128; unsigned short us = 0; us = c+uc; printf("%x\n",us
2017-09-21 22:43:57
488
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人