![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
分享关于C++方面的知识
17岁boy想当攻城狮
在时间的大钟上,只有两个字「现在」
展开
-
C++ override关键字
Override是C++里的一个关键字,意思是覆盖,用途是让编译器在编译期间检查并放置子类对父类虚函数产生重载。原创 2024-07-11 10:43:48 · 221 阅读 · 1 评论 -
c++缓冲区同步原理与std::ios::sync_with_stdio作用
c++是基于c语言的扩展语言,本质上它继承了c语言许多特性,同时也继承了C语言特性,在c语言中stdio为输入输出缓冲区,stdin是输入缓冲区,stdout是输出缓冲区,C++不与C语言使用同一个缓冲区,这就出现了一个问题,当使用printfcouttest2test1可以看到test2早于test1输出了,这是因为c语言的机制,c语言缓冲区只有在遇到\n程序结束缓冲区满时才会刷新缓冲区。原创 2024-04-28 10:01:24 · 484 阅读 · 3 评论 -
c++反转字符,算法优化与实现
c++反转字符这是我在leetcode上看见的题目尝试了几种写法,耗时均不同,这里先说一下第一种算法“交换法”交换法反转字符就是从尾部一直向前挪移:如:abcd = dbca这是第一次交换,第二次交换就是:dcba可以看到每次交换都是首位交换,以此向中心扩展,通俗易懂的说就是两者之间向中心点靠拢,每次交换会交换两个字符,所以交换时间是:o(s\2)四个字符两次就可以完成反转实现...原创 2020-04-24 11:30:25 · 364 阅读 · 0 评论 -
WEB库
Web文件体系简介:该文件下有两个目录Source Code:源代码Target FIle:目标文件(DLL,LIB)Web类是强大的socket编程,支持Post,Get请求PUT和Delete请求目前保留,未公开可创建socket通讯以及服务器编程声明:Web();Web(int Len);~Web();//创建SocketWEB_FUNC...原创 2019-04-02 18:34:23 · 666 阅读 · 0 评论 -
字符串处理类库_CharString
CharString类库是SDT(Standard Development Toolkit 标准开发工具包)库中属于字符处理类库的函数,由博主自己开发的,跨平台,且纯C/C++实现,代码风格良好,逻辑思路清晰,且对指针以及内存管理方面严谨,适合初学者或者已经正在工作人员下载下来学习,或者运用到实际工作当中去,此类库也是博主在开发一个完整的大型WEB服务器架构中的一个模块,先逐步开源,这样就不止于日...原创 2019-02-22 01:21:54 · 625 阅读 · 0 评论 -
StorAge存储库
StorAge存储简介:该文件下有两个目录Source Code:源代码Target FIle:目标文件(DLL,LIB)该存储库使用模版方式实现,由于编译器不能很好的将模版类导出实现代码分割,所以只导出了LIB库,使用时可能报错,建议使用多文件编程的方式调用本库,因为模版函数需要调用时才会被编译,所以很多情况下会出现无法解析的符号!使用方法:List<int>...原创 2019-03-25 23:17:40 · 749 阅读 · 0 评论 -
File库
File类介绍:基于C/C++的文件操作流可跨平台!//构造File();//判断文件是否存在FILE_FUNC_IJudegFileStay(char*FileName);//读文件内容FILE_FUNC_CPReadFile(char*FileName,signedlonglongintFileTxT_Seek,boolSeek_End...原创 2019-03-26 01:26:01 · 369 阅读 · 0 评论 -
C++模版类List实现
模版类即使用模版的泛型方式来编写类似链表的链式物理结构,这篇文章我是以动态数组的方式实现的,所以是List线性物理结构!1.包含头文件定义函数执行的正确与错误宏用来判断函数执行,其次在定义类型别名(个人的一个小习惯)头文件#include <stdio.h>#include <stdlib.h>#include <iostream>宏与...原创 2019-03-20 12:19:46 · 2913 阅读 · 0 评论 -
C/C++ 异常( std::exception)
C++提供异常主要是为了分割库异常与调用者之间的分割平常当我们开发一个lib库时,一般lib库里的函数发生异常都会通过返回值来告诉用户,但是这样的开发属实有点过于麻烦了如:int test(){ //发生错误1 return 1; //发生错误2 return 2}上面一个名为test的函数发生了异常,通过num数字来表示异常类型,这样的情况下调用者还要去翻阅手册去查查你这个返回到底是什么意思,在开发期间极其耗费时间,如果能够很直观的报出错误会很方便,但是原创 2020-11-27 20:09:49 · 11227 阅读 · 2 评论 -
为什么很多公司不允许使用C++ STL?
以下回答转自知乎,博主觉得写得很到位,从多方面考虑! 有些专业术语,博主已经添加注释,列如RTTI,Exception嵌入式系统或专用系统。在这种系统中可能连像样的C++编译器都没有,STL更是无从用起操作系统内核。这个环境中往往缺乏必要的C++ Runtime支持,例如I/O、RTTI(RTTI(Run-Time Type Identification),通过运行时类型信息程序能够使用基类的指针...原创 2018-04-03 17:04:06 · 7169 阅读 · 0 评论 -
声明类对象加括号与声明指针对象加括号的问题
有的时候我们会在代码里看到这样的声明:Test a(); //classchar* b(); //ptr有时候你会看到它出现在作用域里int main(){ Test a(); char* b(); return 0;}大家不要被它的表面迷惑,其实这就是一个函数声明,在c99的编译器里是不允许这么写的,其实完整的写法应该是: extern Test a(); extern char* b();只是随着编译器的迭代,逐渐对写法不在原创 2021-12-21 09:24:58 · 485 阅读 · 0 评论 -
C/C++_虚函数
虚函数推出的目的是为了解决派生类调用基类的问题,在最早派生类继承基类之后,当派生类想要调用基类的方法时必须使用“derived_classes->base_classes::func”很显然这样比较龊,其次是不太符合泛型编程的思想,因为基类里应描述派生类的基本行为,但如果派生类的种类不同很显然某些基本行为并不能满足派生类。如:狼,蜘蛛,老虎,蛇,都属于动物那么动物就是基类,狼,蜘蛛,老虎,蛇都属于派生类但是它们攻击的姿势不同,狼和老虎是咬,蜘蛛是缠网,蛇是缠绕,那么这种情况下如果基原创 2020-11-25 12:02:14 · 337 阅读 · 0 评论 -
C++_public、private、protected权限介绍
目录public(公有成员权限):private(私有成员权限):protected:public(公有成员权限):在此权限声明下的所有类成员函数以及类成员都以公开的方式提供给类对象。用户在声明此类时,可以访问类内部所有的成员函数以及成员对象private(私有成员权限):此成员仅供类内部使用,继承类(子类)也无法直接访问,类对象也无法直接访问。继承类可以通过父类提供的公共成员函数访问私有成员,类对象也可以。protected:保护成员,类对象无法直接访问,.原创 2020-12-23 12:41:50 · 730 阅读 · 0 评论 -
c++11 类中关于default、explict、implicit、noexcept、final的详解
defaultdefault是c++11的标准,它的作用是告诉编译器声明一个无参的默认构造函数。最初的时候我们声明类是这样的:class test{ public: int add(){}};由于我们没有给默认构造函数,c++编译器隐式的帮我们增加了一个默认的无参构造函数,注意这一点取决于编译,有的编译器不会增加,但大多数都会,如GCC、MSVC。但是一旦我们声明了一个有参的构造函数:class test{ public:原创 2021-11-14 22:41:35 · 2249 阅读 · 0 评论 -
C/C++_Lambda表达式
Lambda是C++11特性,用于创建匿名函数,匿名函数即只拥有函数体,但是没有函数名。你可以把他理解为一小段代码,但是又不需要像函数哪有,执行函数现场保护。推出这种表达式主要目的是为了解决一次性函数,如当我们在编写一段代码想要处理某些事情得时候,我们需要编写一段代码,其中有一段代码下面是要可以复用的,但是它只限于当前函数使用,一次性的函数,如果为其单独编写一个函数未免有些浪费资源,和编写一些无用代码,但是不写的话,下面又要重写一段与上面一样的代码。这个时候,Lambda就诞生了,在这种情况下我原创 2021-05-31 12:24:08 · 1064 阅读 · 10 评论 -
C++11for(auto iter : container)&&auto简介
c++11重新定义了新的特性auto,使它能够支持模板,容器,让它成为迭代器。并且推出了新的写法:std::string test="hellowor";for(auto iter : test){ iter = "c";}这样test里的helloword全部变成了“c”上面这样的方式不支持一般的基础变量。仅支持stl的容器,目前string已经更改成stl容器的方式实现,auto能够自动推导出st容器的迭代器类型。自stk标准模板库里的容器纳入c++11标准原创 2020-12-25 16:41:01 · 2692 阅读 · 0 评论 -
C++类静态成员变量作用域共享问题
在C++中类的静态成员变量对于所有此类声明的变量来说共享。也就是说你声明了一个A类,A类里包含了一个静态的成员变量test,然后声明了多个A类的类变量,这些类变量共享一个成员变量test内存空间,有一个类变量改变了静态成员的值,其它类的成员变量test都会发生改变。其静态成员变量需要在外部进行初始化,因为它的内存区存储在Data全局区class A{ public: static int test; //这块会变成一块指向全局区内存的地址};//在外部进行初始原创 2021-11-08 14:23:44 · 1627 阅读 · 0 评论 -
C++Lambda表达式作为参数
Lambda表达式又称为小型函数,它的使用方法是:[捕获方式](参数类型)->返回类型{代码}通常我们不会写返回类型,因为编译器可以根据Return语句来推导返回类型,隐式为我们去加上去。相关可以参考:C/C++_Lambda表达式_17岁boy的博客-CSDN博客首先我们定义一个函数指针,参数是函数指针:typedef int (*pFunc)(int,int);int CallBack(pFunc Func){ return Func(5,5);}然后原创 2022-03-10 11:01:36 · 3719 阅读 · 1 评论 -
Const限定符与C++11Constexpr的区别
Const限定符:属于标准C里的限定符,负责将变量、对象转换成一个字面值常量,值得注意的是,Const限定符只能在编译期间被确定为字面值常量,但是在运行阶段还是会为其分配内存而不是存在于代码段中,也就是经常说的立即数,所以我们可以通过指针间接寻址改变它的数值!Const限定符属于编译器的管辖范围,只有在编译阶段编译器会检查是否有对Const限定符修饰的变量被尝试直面的改变,如果有会报错。Cons...原创 2018-03-26 18:20:37 · 445 阅读 · 0 评论 -
c++:ISO C++ forbids declaration of ‘xxx’ with no type
这种情况一般发生在你的类声明的函数体与实现类的函数体名字不一致如:声明:class spi{ public: spi(); ~spi();} 实现:spi:spl(){ //这里spi写成了spl}spi:~spi(){}仔细检查一下声明与实现的原型是否一致...原创 2020-09-18 16:53:28 · 3527 阅读 · 0 评论 -
C++_继承
1.继承的概念继承的出现就是为了解决重复类的问题。如最常见的游戏开发中,我们编写了许多类,其中不少类都有共同点,共同的特性以及共同的实现这些特性的函数,如果将来这些代码需要迭代,那所有跟这些特性相关的代码都要去修改,岂不复杂死?所以C++推出了继承这一概念,只需要声明一个基类(父类),基类通常定义为一个描述某个对象的类,如动物,人等,派生类通过继承父类,来扩展自己的一些特性,如,老师这个职业,老师这个职业肯定是人来当的,那么它就具有人的特性,如:年龄,身高,性别等特性,我们通过继承人这个父类,来原创 2020-12-21 17:38:26 · 224 阅读 · 0 评论 -
C++11封装thread类
这是我在工作中自己封装的线程类,分享给大家,功能齐全,可以执行线程内部类,也可以很容易二次封装成线程池。Thread_Controller.hpp文件#include <iostream>#include <thread>#include <mutex>#include <future>#include <sstream>#include "WE_Tools.h"#include "WE_Tools_Message.h"u原创 2020-12-25 09:57:44 · 1164 阅读 · 0 评论