基础知识
`Nobody
小菜鸡
展开
-
虚函数、虚指针、虚表
初识虚函数虚函数是带有Virtual关键字的函数 纯虚函数在虚函数之后加 =0 的函数 虚函数是动态绑定的函数 虚函数必须是非静态成员函数(因为静态成员函数是没有this指针的) 析构函数可以是虚函数(减少内存泄漏) 构造函数不能是虚函数(时间上冲突)虚函数的声明virtual int ret() ;virtual 函数返回值类型 函数名 (参数列表) 虚函数是可以进行重写的,子类中可以对虚函数进行重写,也可以不重写。意义:为了实现多态性,也就是动态绑...原创 2020-05-15 21:37:31 · 297 阅读 · 0 评论 -
C++的三大特性
C++有三大特性,分别是封装、继承、多态封装: 字面意思就是包装的意思,专业术语来说就是信息隐藏。简单的来说就是一个类包装了一些数据以及操作这些数据的代码的逻辑实体。在一个类对象内部,某些操作或者数据可以是私有的,也可以是公有的。私有的是不能被外界锁访问的。通过这种方式,对类的内部成员提供了不同级别的保护,尽可能的去隐藏掉内部细节,只提供给对外的一些接口,用户无需知道对象内部细节,只通过接口来访问。良好的封装可以减少耦合 可以对成员进行更精确的控制class MyClass...原创 2020-05-15 15:21:51 · 1500 阅读 · 0 评论 -
Hash基础知识点
概念:Hash 是“杂乱信息”的意思。Hash表是将一堆杂乱得信息,根据它们的关键词特点,将其映射到一个连续的空间上。这种映射关系称作索引方法 ,对应的实现函数叫哈希函数,同时将关键词映射后的值叫做关键词的索引。 索引实际上就是数组的下标,数组的每一个位置习惯上也被称作桶(bucket),在哈希表中桶和索引的叫法是等价的。哈希表的索引方法:整除取余法/** 哈希表的计算整数的索引函数@param UINT uKey——关键词@param UINT uBucketCount—...原创 2020-05-11 20:31:37 · 505 阅读 · 0 评论 -
如何在main函数之前调用其他函数 ?
将要执行的代码写到类的构造函数种,并定义全局变量 在windows平台中,执行main函数之前,系统会执行一段CRTstartup代码,对系统的堆栈、全局变量、命令行参数、环境变量等进行初始化操作。我们利用对全局变量的初始化机制来让构造函数中的代码优先在main函数之前执行。#include<iostream>#include<Windows.h>using namespace std;class Debug{public: Debug() { ..原创 2020-05-08 19:06:56 · 2812 阅读 · 2 评论 -
在Dll中创建线程?No,大错特错
前几天的时候,遇到一个面试 ,问我在Dll中的忌讳有什么?我回答的是不能在dll main函数中创建线程和加载动态库,然后下一个问题也接着来了,为什么不能?我说会造成死锁,但是具体的是什么原因造成的死锁,当时只记得看过《Windows 核心编程》,书中有过介绍,但是忘记了,无非就是因为同步问题,线程间会造成互相阻塞状态。具体是什么,今天回来分析一下。Windows 核心编程中的原话是这...原创 2020-05-07 14:57:18 · 2980 阅读 · 5 评论 -
c++源文件从文本阶段到可执行文件的过程
过程分为四个阶段: 预处理阶段····>编译阶段····>汇编阶段····>链接阶段1)预处理阶段:对源代码文件中的文件包含关系、预编译语句(宏定义)进行分析和替换,生成预编译文件。····删除所有的#define,展开所有的宏定义····处理所有的条件预编译语句#if、#else、#end if等····处理所有的 “#include...原创 2020-03-10 20:01:00 · 148 阅读 · 0 评论