随笔分类 - C&C++语言小白日记
摘要:2.1 STL的诞生 长久以来,软件界一直希望建立一种可重复利用的东西 C++的面向对象(封装多态)和泛型编程思想,目的就是复用性的提升 大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作 为了建立数据结构和算法的一套标准,诞生了STL 2.2 STL基本概念 STL(Standa
阅读全文
摘要:多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码 解决方式:将父类中的析构函数改为虚析构或者纯虚析构 虚析构和纯虚析构共性: 可以解决父类指针释放子类对象 都需要有具体的函数实现 虚析构和纯虚析构区别: 如果是纯虚析构,该类属于抽象类,无法实例化对象 虚析构语法:
阅读全文
摘要:在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容 因此可以将虚函数改为纯虚函数 纯虚函数语法:virtual 返回值类型 函数名 (参数列表)= 0 ; 当类中有了纯虚函数,这个类也称为==抽象类== 抽象类特点: 无法实例化对象 子类必须重写抽象类中的纯虚函数,否则也属于抽
阅读全文
摘要:多态是C++面向对象三大特性之一 多态分为两类 静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名 动态多态: 派生类和虚函数实现运行时多态 静态多态和动态多态区别: 静态多态的函数地址早绑定 - 编译阶段确定函数地址 动态多态的函数地址晚绑定 - 运行阶段确定函数地址 下面通过案例进行讲
阅读全文
摘要:子类继承父类后,当创建子类对象,也会调用父类的构造函数 问题:父类和子类的构造和析构顺序是谁先谁后? class Base { public: Base() { cout << "Base构造函数!" << endl; } ~Base() { cout << "Base析构函数!" << endl;
阅读全文
摘要:就是改变原来运算符的一些性质,也就是给运算符重新定义它的功能。 例子:比如编译器自己形成的浅拷贝构造函数可能会导致析构函数引发内存多次释放而引起内存错误,那么归根到底是由于赋值操作出了问题,那么我们可以针对类,单独对“=”进行运算符重载,解决浅拷贝可能引发的问题。 class CSstudent{p
阅读全文
摘要:继承的方式:①、public公有继承:父类的公有成员和受保护成员在子类中保持原有的访问属性,其私有成员仍为父类私有,在子类中是访问不了的,即使通过子类的共有成员函数也访问不了;②、private私有继承:父类的公有成员和受保护的成员在子类中变成了私有成员,其私有成员仍为父类私有, 在子类中是访问不了
阅读全文
摘要:1、函数重载的由来:在平时的编程过程中,一个函数可能就实现一个功能,多个功能就需要多个函数。但有时候多个功能之间很像,只是一些细节有差异,那么类似这样的功能能不能写成一个函数呢?例如,要求2个数中比较大的数,这两个数的类型有时候是int类型,有时候是float类型,那么我们按照之前的写法应该是这样封
阅读全文
摘要:默认情况下,c++编译器至少给一个类添加3个函数 1.默认构造函数(无参,函数体为空) 2.默认析构函数(无参,函数体为空) 3.默认拷贝构造函数(系统默认生成的拷贝构造函数,只负责进行简单的赋值操作,即浅拷贝),对属性进行值拷贝 构造函数调用规则如下: 如果用户定义有参构造函数,c++不在提供默认
阅读全文
摘要:#include <stdio.h> int main(void) { //-1为整数,内存中存储为四个字节 //-1原码:10000000000000000000000000000001 //-1反码:11111111111111111111111111111110 //-1补码:11111111
阅读全文
摘要:之前,刚刚学习C语言的时候,学习其它数据类型的时候,感觉很好理解,但是学到指针的时候,笔者就蒙蔽了,因为看到课本上的文字,云里雾里的,什么指针,什么指针变量,对于笔者来说都是傻傻分不清,感觉指针和指针变量好像一样,或者试图去背下来,但是老是搞混。那时候不知道,我的心思是在忙于社团工作,还是在哪个漂亮
阅读全文
摘要:Linux中万物皆文件。 js中万物皆对象。 而我觉得编程世界,万物皆内存,无非是读写内存操作,我们要找到我们想要用到的资源,那么一定要先找到内存地址,再去拿出来我们正真想要用的值~~ 下面用一个简单的交换程序来说明传值与串址的区别。 (1)传值 1 void swap(int a,int b);
阅读全文
摘要:(1)scanf与scanf_s char[30] = searchName; scanf_s("%s", searchName,30); scanf("%s", searchName); scanf_s是编辑器推荐的写法,比如微软的vs,它加强了读取一个数组的边界检测,就是第三个参数,用来定义可以
阅读全文
摘要:C语言位运算符,对于普通程序员来说,平时很少用到,但是对于偏开发底层的程序员来说很好用,概念也很简单,无非就是拿二进制数做各种运算。 1.按位与& 例子:4&1 过程:先化为二进制: 100 001 结果 000(运算法则:1&0=0,1&1=1,0&1=0,0&0=0)化为10进制结果为:0. 2
阅读全文
摘要:其实puts(),gets()属于字符串输入函数。 putchar()与getchar()属于字符输入函数。 1.字符函数 #include<stdio.h> int main(){ char c; printf(“请输入一个字符:”); c=getchar(); putchar(c); retur
阅读全文
摘要:#include <windows.h> #include <mmsystem.h> #include <string.h> void main() { int a; char b; float c; printf("please input an integer:"); scanf("%d", &
阅读全文
摘要:由于笔者目前正在上计算机网络的课,老师要我们编一下crc的循环检测过程,所以我想着刚好在学c,那就随便看看写不写的了,首先百度了一下网上资料,基本都是用位移运算符实现的,由于本人懒得去看一下位移运算,就用数组存储1,0,凑合一下,采用元素整体往前移1位的思想,看看能不能实现,最后似乎是写出来了,但是
阅读全文
摘要:#include <stdio.h> #include <windows.h> #include <mmsystem.h> #include <string.h> typedef struct _accoutn { char *name;//定义用户名 char *bankName;//定义银行名称
阅读全文