自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++特性之多态

多态的定义及实现通俗的来讲,就是多形态,不同的对象去完成同一个行为会有不同的状态。(比如买票的话,成人票是200,学生可以半价买票,军人可以优先买票)在编程中,多态就是不同继承关系的类对象,去调用同一个函数,会有不同的行为。1.多态的构成条件必须用基类的引用或指针来调用这个虚函数被调用的函数必须是虚函数,并且派生类必须对基类的虚函数进行重写如果不满足多态的话,调用哪个函数跟类型有关,people是哪个类型的,调用的就是哪个类型的成员函数。如果满足多态的话,调用哪个函数跟对象有关,传的是哪

2021-05-22 10:44:37 1234 6

原创 C++特性之继承

继承的概念和定义1.作用通俗的来说,继承就是从类的设计角度避免重复定义方法和数据,进行类角度的复用//这就是继承class Person{protected: string _name = "peter";//注意这里不是初始化,初始化是在定义的地方进行,而这里只是声明。这里是缺省值。 int _age = 20;};class Student : public Person{protected: int _grade;//年级};class Teacher : publi

2021-05-20 15:58:06 1480 10

原创 List的模拟实现

#pragma once#include<iostream>#include<assert.h>using namespace std;namespace zwh{ //结点类 template<class T> struct __list_node { T _data; __list_node<T>* _next; __list_node<T>* _prev; __list_node(const T&

2021-05-11 16:49:23 152

原创 vector的模拟实现

vector的模拟实现(包括增删查改)如下#include<iostream>#include<assert.h>using namespace std;#pragma oncenamespace zwh{ template<class T> class vector { public: //跟string一样 vector中的迭代器也是原生指针 typedef T* iterator; iterator begin() { r

2021-05-06 13:48:59 98 2

原创 STL中的string

string类string是表示字符串的字符串类string类的常用接口说明1.string类对象的常见构造下面是三种常见的string类对象构造void Teststring(){ string s1;//构造一个空的string类对象s1 string s2("hello");//用C字符串风格来构造string类对象s4 string s3(s2);//拷贝构造s3}2.string类对象的容量操作函数名称功能说明size返回字符串

2021-05-05 14:31:35 3621 10

原创 类和对象(中)

类的6个默认成员函数如果一个类中什么成员都没有,则称为空类。但任何一个类在我们不主动实现的情况下都会自动生成6个默认成员函数。1.构造函数

2021-03-16 13:58:59 923 1

原创 类和对象(上)

1.面向过程和面向对象的初步认识C语言是面向过程的,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是面向对象的,将一件事请拆分成不同的对象,靠对象之间的交互完成。举个例子:(设计一个外卖系统)C语言面向过程:关注->点餐,配餐,送餐C++ 面向对象 : 关注->商家,骑手,用户2.类的引入C语言中,结构体中只能定义变量(变量的集合)。C++中,首先C++是兼容了C语言结构体的用法,并且在此基础上把struct升级成了类,结构体中除了变量还可以有函数。struc

2021-03-14 17:25:52 2475 2

原创 C++ 中的范围for循环

基于范围的for循环C++111.范围for的语法在C++98中如果要遍历一个数组,按如下方式进行void Test(){ int array[] = { 1,2,3,4,5 }; for (int i = 0; i < sizeof(array) / sizeof(array[0]); i++) array[i] *= 2; for (int* p = arraylp < array + sizeof(array) / sizeof(array[0]);p++)

2021-03-14 10:38:21 1288 5

原创 C++ 中的auto关键字

auto关键字C++111. auto简介在早期的C/C++中auto的含义是:使用auto修饰的变量,具有自动存储器的局部变量。C++11中,auto有了全新的含义:auto不再是一个存储类型的指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。int a = 5;auto b = a;cout << typeid(b).name() << endl;会自动推导出b的类型↑↑注意:使用auto定义变量时必须对其

2021-03-14 10:17:29 1147 2

原创 C++ 中的内联函数

内联函数1.内联函数的概念以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率inline void swap(int& a, int& b){ int tmp = a; a = b; b = tmp;}int main(){ int x = 1, y = 2; swap(x, y); return 0;}像swap函数是一个需要频繁调用的函数。调用函数的时候需要建立栈帧,建

2021-03-14 09:21:48 674 1

原创 C++ 中的引用

引用1.引用的概念引用不是新定义了一个变量,而是给已经存在的变量取了一个别名,编译器不会为引用变量开辟内存空间,他和他引用的变量共用一块内存空间(通俗点来讲,引用就是取别名)类型& 引用变量名(对象名)=引用实体(注意:引用类型和引用实体必须是同种类型的)void Test(){ int a = 5; int& b = a //b是a的别名,b是a的引用,另外注意这里的&不是取地址}2.引用的特性2.1引用在定义时必须初始化int& b;b

2021-03-14 08:52:07 2217

原创 C++ 中的函数重载

函数重载函数重载的概念:函数重载是函数的一种特殊情况,C++中允许同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数、类型、顺序)不同。注意:顺序不同指的是不同类型的参数顺序不同,而不是单纯的同类型参数顺序不同int Add(int left, int right)int Add(int right, int left)↑↑↑这样的不行↑↑↑int Add(int left, long right)int Add(long right, int left)//只

2021-03-13 17:43:21 5596

原创 C++ 中的缺省参数

缺省参数1.缺省参数的概念缺省参数是声明或定义函数时为函数的参数指定一个默认值,在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参void Test(int a = 1){ cout << a << endl;}int main(){ Test();//没有传参时,使用的时参数的默认值,即1 Test(2);//传参时,使用的是指定实参 return 0;}2.缺省参数的分类2.1全缺省参数void Test(int a = 1,

2021-03-12 23:05:22 1641

原创 C++ 中的命名空间

命名空间1.命名空间的定义:在C/C++中,变量、函数和类的名称都存在于全局域中,可能会导致很多冲突,使用命名空间的目的就是对标识符的名称进行本地化,以避免冲突或名字污染,namespace关键字的出现就是针对这种问题。1.1普通的命名空间namespace N1 //N1为命名空间名字{ //命名空间中的内容,既可以定义变量也可以定义函数 int a; int Add(int left, int right) { return left + right; }}1.2命名

2021-03-12 22:41:42 754

原创 关于动态内存管理的经典笔试题

题目1下面代码是否能打印出 ”hello world“void GetMemory(char * p){ p = (char *)malloc(100);}void Test(void){ char * str = NULL; GetMemory(str); strcpy(str, "hello world"); printf("str");}int main(){ Test(); return 0;}问题1:程序没有进行手动释放,会造成内存泄露问题2:这几个函数

2020-11-13 23:21:31 314

原创 c语言中的动态内存管理

内存区一般分为栈区:存放临时变量,如局部变量、形参。堆区:动态内存分配、malloc、calloc、free、reallec。静态区:生命周期很长,如全局变量和静态变量,他们的生命周期是整个程序的生命周期。动态内存分配就属于堆区。为什么存在动态内存分配?int a=20在内存中开辟一块四个字节大小的空间char arr[10]={0}在内存中开辟10个字节的空间大小上面这两种内存开辟方法有两个特点:1.空间开辟的大小是固定的2.数组在申明时,必须指定数组的长度,它所需要的内存在编译时

2020-11-12 22:00:41 363

原创 C语言中库函数及其模拟实现

字符函数和字符串函数strlen函数size_t strlen (conse char * str);注意:1.字符串以 \0 作为结束标志,strlen函数返回的是在字符串中 \0 之前出现的字符个数(不包括\0)2.函数的返回类型是size_t,是无符号的。3.参数指向的字符串必须以 \0 结束。对于第二点,以代码进行分析int main(){ char *p1 = "abc"; char *p2 = "abcde"; if (strlen(p1) - strlen(p2)

2020-11-12 11:13:43 462

原创 C语言实现一个简单的通讯录

通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、QQ、住址。通讯录功能包括:添加联系人、显示联系人、删除指定联系人、查找指定联系人、修改指定联系人、对通讯录进行排序。整个通讯录由三个文件组成:contact.h contact.c test.ccontact.h#include<stdio.h>#include<string.h>#define MAX_NAME 20#define MAX_TELE 12#define MAX_A.

2020-11-02 14:43:38 1402 1

原创 内存中数据的存储情况

数据类型1. 内置类型类型的意义1.使用了这个类型开辟的内存空间的大小(大小决定了使用范围)2.以什么样的视角来看待这个内存空间(如int a=0,那就认为这个0是整数0)类型的基本归类整形(方块里的那些是可以省略掉的,signed:有符号的)像char c=‘w’,到底是signed char c 还是 unsigned char c是不确定的,这取决于编译器但除了char 其他的像 int、char等,都是signed有符号的。另外注意,signed的二进制的最

2020-09-27 12:20:56 686

原创 c语言的static

c语言中static的三种用法:1.static修饰局部变量2.static修饰全局变量3.static修饰函数1.static修饰局部变量通过这两个代码不难看出, static修饰局部变量从而改变了这个局部变量的生命周期,若没有static修饰,当程序执行完test后在test中的数也会被”销毁“2.static修饰全局变量可以看到第二个文件中的程序引入了第一个文件中的 int g_val 并能成功输出结果2021如果用static修饰则会报错所以,static修饰全局变量的

2020-08-14 18:04:43 1186

原创 2020.8.7第一次的博客

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器删除线格式新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的M

2020-08-07 23:37:44 843 2

空空如也

空空如也

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

TA关注的人

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