自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 C++中的多态与动态绑定

当编译器看到通过指向子类对象的基类指针或者引用子类对象的基类引用调用基类中的虚函数时,并不会直接生成函数的调用代码,相反,会在该函数调用的地方生成若干指令,这些指令在程序运行时被执行,依次完成如下功能:1.根据指针或者引用的目标对象找到对应的虚函数表的指针(虚表指针)2.根据虚函数指针,找到该类对应虚函数的地址3.根据虚函数的地址,指向对应虚函数的代码4.执行虚函数的代码指令因此,多态是运行时绑定,动态绑定,指的是只有当运行阶段才能确定调用的函数动态绑定对程序性能会造成一定的影响(让程序运行效率

2021-09-07 19:42:06 876

原创 C++中的重载、覆盖与隐藏

重载:在同一个作用域下,函数名相同,参数列表不同即构成重载条件:必须在同一个作用域(类)下函数名相同参数列表不同:参数类型和参数个数不一样 对于指针和引用常属性不一样也构成重载与返回值类型无关覆盖(重写):子类重写父类同型的虚函数条件:分布在父子类中函数名相同参数列表必须相同:参数类型和个数必须相同,函数的常属性必须相同参数是指针和引用,常属性必须相同与返回值类型有关,如果不是类类型指针或者类类型引用,必须完全一致,否则可以有父子关系基类必须是虚函数,重写的版本也一定是虚函数

2021-09-07 19:35:58 159

原创 C++中的虚函数与多态

虚函数与多态:如果将基类中的成员函数声明为虚函数,那么子类中可以重写基类中该虚函数(子类中无论是否有virtual关键字都是虚函数),这样对积累中的虚函数形成覆盖这时,通过一个基类类型的指针指向子类对象时,或者通过一个基类类型的引用引用子类对象时,调用该虚函数时,实际被调用的函数不由指针或者引用本身的类型决定,而是由它们的目标对象来决定,最终导致子类覆盖版本的函数被调用,这种现象称为多态#include <iostream>using namespace std;class Shape

2021-09-07 19:11:35 134

原创 C++中类的继承

继承的定义:一个类属于另外一个类的一部分该类拥有另外一个类的所有的属性和方法如果一个类继承另外一个类,那么该类拥有另外一个类的所有的属性和方法在C++中,定义一个类可以继承其他的类支持多继承,即一个类有多个父类继承多个类时,每个类的继承方式都可以不一样继承方式有:public 公开继承protected 保护继承private 私有继承C++中默认的(缺省的)继承方式为私有继承在继承中,被继承的类称为父类或基类,继承父类的类称为子类或派生类继承的意义:子类拥有父类的属性

2021-09-07 18:46:01 1119

原创 UNIX环境编程之信号处理

一、基本概念1.中断中止(并非终止)当前正在执行的程序,转而执行其他任务2.信号是一种软件中断信号提供了一种以异步方式执行任务的机制3.常见信号SIGHUP(1) 链接断开信号SIGINT(2) 终端终端符信号SIGQUIT(3) 终端退出符信号SIGKILL(9) 终止信号SIGTSTP(20) 终端停止符信号4.不可靠信号(非实时信号)小于SIGRTMIN(34)的信号都是不可靠信号不支持排队,可能会丢失5.可靠信号(实时信号)位于SIGRTMIN(34),SIGR

2021-09-06 21:36:41 168

原创 UNIX环境编程之内存管理

错误处理:1.通过函数的返回值表达错误1)返回合法值表示成功,返回非法值表示失败2)返回有效指针表示成功,返回无效指针(NULL/0xFFFFFFFF)表示失败3)返回0表示成功,返回-1表示失败2.通过errno表示错误#include<errno.h>1)根据errno得到错误编号2)将errno转换为有意义的字符#include<stdio.h>#include<errno.h>int main(){ FILE *fp = fopen("n

2021-08-03 22:37:02 207 2

原创 UNIX环境编程之静态库与动态库

静态库:将目标文件以一种特定的方式打包成一个单独的文件,并且在链接生成可执行文件时,从这个单独的文件中“拷贝”它自己需要的内容到最终的可执行文件中。这个单独的文件,称为静态库。linux中通常以.a(archive)为后缀(缺省扩展名即默认扩展名)静态库占用空间非常大,不易修改但执行效率高。创建静态库流程:1.创建.c文件和.h文件2.将.c文件编译成目标文件 .o文件3.打包成静态库文件打包生成静态库文件 libxxx.a (xxx自己定义)ar指令:ar [选项] 静态库文件名

2021-07-29 20:23:33 338

原创 C语言中的内部排序

插入排序:1.直接插入排序2.折半插入排序3.希尔排序**排序的三种特性:**1.时间复杂度算法的时间复杂度是一个函数,它定性描述该算法的运行时间2.空间复杂度空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度3.稳定性初始数列中有R[i]和R[j]两个元素,两个元素相等(R[i]==R[j]),且i<j,当经过某种排序以后,R[i]元素位置变为i’,R[j]元素位置变为j’,如果在排序之后,i’<j’,R[i’]位置依然在R[j’]之前,那么称之为稳定排序稳

2021-07-26 22:31:45 265

原创 PAT 1002 写出这个数(C语言)

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10​100​​ 。输出格式:在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。输入样例:1234567890987654321123456789输出样例:yi san wuint main(){ int sum = 0; int n = 0; char c = '0';

2021-07-21 19:12:27 62

原创 C语言qsort的使用方法

C语言中qsort的使用方法利用qsort进行冒泡排序qsort函数原型:void qsort(void *base,size_t nmemb,size_t size,int (*compar)(const void *,const void *));//base 要排序的数组;nmemb 数组长度;size 数组元素长度;以怎样的方式进行排列qsort调用:#include<stdio.h>#include<stdlib.h>int comparInt(const

2021-06-16 21:57:01 109

原创 PAT 1009 说反话 C语言

#include<stdio.h>#include<string.h>void reverse(char *str){ char st[50][50] = {}; int a = 0; int b = 0; int c = 0; while(str[c] != '\0'){ st[b][a]=str[c]; c++; a++; if(str[c] == ' '){ b++; a = 0; } } int i,j; for(i=b;

2021-05-25 21:48:56 98

原创 使用C语言实现字符串的逆序输出

使用C语言实现字符串的逆序输出方法1:#include<stdio.h>#include<string.h>void reverse(char *s){int n = 0;int m = strlen(s) - 1;while(n<m){char tmp = s[n];s[n] = s[m];s[m] = tmp;n++;m–;}}int main(){char s[] = “Hello world”;reverse(s);printf("%

2021-05-25 18:42:26 17777 4

原创 Linux基本命令

Linux基本命令Linux 基本命令:Linux终端 类似于windows下面的 cmd 控制台1.whoami 我是谁2.pwd 我在哪 print working directory3.ls list列出当前目录下的文件ls -a 查看隐藏文件ls -l 详细显示文件信息ls -lkls -lh h 4kls -t 按照时间排序显示ls -r 逆序显示ls -rt 按时间倒序显示ls -sdrxwxr - xr - x 3 root root 4096

2020-12-24 20:28:02 123 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除