![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 79
JoJoJo1234
莫欺少年穷!
展开
-
【C++基础】类与对象、封装
六、类与对象:我们首先看一下结构化程序设计语言(常见的就是C语言)的设计思想:程序 = 算法 + 数据结构其中算法第一,数据结构第二而面向对象的程序设计OOP(Object Oriented Programming)的设计思想则是:程序 = 对象 + 对象 + 对象 ……关键:让每一个对象负责执行一组相关的任务1.面向对象编程开发的特性:1)万物皆对象2)程序就...原创 2019-01-17 14:37:23 · 254 阅读 · 0 评论 -
C++相关面试题总结
讲一下static关键字的作用?1. 全局静态变量在全局变量前加上static关键字,全局变量就成了全局静态变量,它在数据段上存放,且在整个程序的运行期间一直都存在.未经初始化的全局变量的值会被自动初始化为0,全局静态变量在声明它的文件之外是不可见的,只在本文件可见。2. 局部静态变量在局部静态变量前加上static关键字后,局部变量就成了局部静态变量,局部静态变量也是存储在...原创 2019-08-18 12:07:45 · 168 阅读 · 0 评论 -
模拟实现C++迭代器
迭代器的基本概念 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用算法有机的统一起来。迭代器基本分为五种,输入输出迭代器,前向逆向迭代器,双向迭代器和随机...原创 2019-07-28 17:44:45 · 240 阅读 · 0 评论 -
内存池
内存池问题提出C/C++编程的时候,最让人头疼的莫过于内存管理:分配足够的内存、追踪内存的分配、在不需要的时候释放内存,这个任务相当复杂。而且在使用系统提供的new/delete malloc/free 的时候,可能会遇到以下的问题:(1)效率问题:内存资源属于硬件资源,所有的硬件资源都是由操作系统进行管理。当我们需要申请内存的时候,由操作系统给我们分配固定大小的内存块,这时候就需要...原创 2019-07-27 23:08:20 · 151 阅读 · 0 评论 -
KMP算法总结(二)
说完了KMP算法的一些基本的操作,我们再来说一下KMP算法的代码实现:写代码的时候和上面我们所说的操作都是一样的:首先我们需要完成的就是prefix-table的构建,为了大家能更好的理解,我们使用一串新的字符串作为例子进行讲解:我们写出它所有的前缀和最长公共前后缀的长度为:我们从中可以发现一个规律:例如:我们拿字符串:“A B A B C A”和字符...原创 2019-08-04 11:08:42 · 458 阅读 · 0 评论 -
通过写时拷贝实现String类
今天看到剑指offer上的一道题:如下为类型CMyString的声明,请你为该类型添加赋值运算符函数class CMyString{public: CMyString(char * pData = NULL); CMyString(const CMyString & str); ~CMyString(void);private:...原创 2019-07-21 16:05:11 · 176 阅读 · 0 评论 -
【C++基础】引用、内联函数、默认参数传递、函数重载和函数模板
C++的语法非常多和繁杂,今天我们先了解一些最基础的语法知识点:引用、内联函数、默认参数传递、函数重载和函数模板这几个方面。一、引用和引用的参数传递:1.操作引用:&只有在声明引用的时候是引用操作符,其他时候都是地址操作符。2.引用和变量指向同一个存储单元。引用一旦初始化,它就维系在一定的目标上,再也不分不开。3.引用和指针的差别:指针是一个变量,可以把它再赋值指向...原创 2019-01-16 16:11:51 · 368 阅读 · 0 评论 -
【C++基础】string类的实现
前面说过,C++提供了string类,里面实现了对字符串的各种操作,string类的实现同时也是再面试和笔试的时候比较场考的一类题型。这次的博客就来进行C++里面string类的实现,因为主要是重载里面的一些运算符,所以也算是对运算符重载的练习。直接来看代码:String.h#ifndef STRING_H#define STRING_H class Mstring{pu...原创 2019-01-21 16:32:53 · 303 阅读 · 0 评论 -
【C++基础】运算符重载
一、运算符重载:1.类是用户自定义的数据类型,使用运算符重载可以i实现如下逻辑:(1)对象1 = 对象2+对象3,如描述复数的类,描述字符串的类。(2)提高程序的可读性。2.重载赋值运算符:(1)如果一个类没有提供赋值运算函数,则默认提供一个。(2)如果一个类提供了拷贝构造函数,那么也要提供一个重载的赋值运算函数。3.重载运算符的规定:(1)重载的运算符要保持原运算...原创 2019-01-20 18:34:00 · 373 阅读 · 0 评论 -
【C++】static类成员、动态内存分配、const关键字、友元函数和友元类
四、static类成员:假设我们使用C++来开发一款游戏没有如下的场景: 假设有一个具有火星人和其他人物的视频。每个火星人都很勇敢,而且当火星人注意到至少存在五个火星人的时候,它总是袭击其他空间的生物。如果少于五个人的话,则每个火星人非常胆小。所以每个火星人都要知道现在游戏中有多少个火星人。 我们现在考虑解决这个问题。如何定义变量,表示游戏中有多少火星人呢?1.使用全...原创 2019-01-19 20:19:24 · 228 阅读 · 0 评论 -
【C++基础】构造函数、析构函数、string类
一、构造函数1.首先我们知道一个常用的编码规范:声明变量赋初值。就是说我们在声明一个变量的时候,可以对它进行初始化,如果不对自己定义的变量进行初始化,一般编译器会指定一个随机值对它进行初始化,例如:int i = 0;int *p = NULL;mallo 申请到的内存区域使用memset进行设置。说白了,初始化就是给变量让它处于一个特定的状态、同理,成员函数在进行定义的时...原创 2019-01-18 18:16:57 · 296 阅读 · 0 评论 -
C++ STL中的内存优化
C++中的内存优化采用两级的空间配置器机制来解决。二级配置器结构:1. 第一级配置器:第一级配置器是以malloc(),remalloc(),free()等C函数执行实际的内存配置,释放,重新配置等操作。一级空间配置器分配的是大于128字节的空间。如果分配失败,调用句柄释放一部分内存。如果还是失败,调用一个指定的函数。如果要分配的区块小于128字节,则以内存池进行管理,内存池又称为...原创 2019-08-18 13:56:33 · 1649 阅读 · 0 评论