C++
文章平均质量分 90
弯弯的丝瓜
小菜鸟一名
展开
-
gtest总结
gtest 总结gtest without mainGoogle的C测试框架有两个输出库:一个是gtest.lib,另一个是gtest_main.lib。依赖gtest.lib 需要实现自己的入口函数mainint main(int argc, char* argv[]){ testing::AddGlobalTestEnvironment(new FooEnvironment); ::testing::InitGoogleTest(&argc, argv); return RU原创 2021-05-07 01:06:25 · 3234 阅读 · 3 评论 -
C++ 标准库读书杂记9 extern “C” C++与C的混合编程
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?答:首先,extern是C/C++语言中表明函数和全局变量作用范围的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。extern "C"是连接申明(linkage declaration),被ext...原创 2018-12-26 19:52:41 · 148 阅读 · 0 评论 -
菱形虚继承遇到多态(虚函数表)
#include <iostream>using namespace std;class Base{public: int intBase1 =1; Base() { cout << "Base" << endl; } virtual void func1() { cout << "Base_func1" <&原创 2018-12-27 22:45:24 · 185 阅读 · 0 评论 -
Linux网络协议栈(一)——Socket
转载:https://www.cnblogs.com/hustcat/archive/2009/09/17/1568738.html 尊重原创,支持原创1、TCP/IP参考模型为了实现各种网络的互连,国际标准化组织(ISO)制定了开放式系统互连(OSI)参考模型。尽管OSI的体系结构从理论上讲是比较完整的,但实际上,完全符合OSI各层协议的商用产品却很少进入市场。而使用TCP/IP 协议的...转载 2019-01-03 15:45:01 · 321 阅读 · 0 评论 -
Linux下的I/O
转载//https://www.cnblogs.com/hustcat/archive/2009/09/18/1569661.html Linux的I/O机制经历了一下几个阶段的演进:(1)同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。(2)同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可以立即返回,但是并不保证I/...转载 2019-01-04 14:32:59 · 158 阅读 · 0 评论 -
Linux网络编程——理解异步I/O
转载:https://www.cnblogs.com/hustcat/archive/2010/04/10/1708909.html 对于服务器程序,I/O是制约系统性能最关键的因素。对于需要处理大量连接的高并发服务器程序,异步I/O几乎是不二的选择。Linux和Windows都为异步I/O构建了大量的基础设施。本文总结了一下Linux和Windows下的异步I/O模型,并给出了一些...转载 2019-01-06 14:33:14 · 800 阅读 · 0 评论 -
linux中的链表容器思想
//include/linux/list.h struct list_head { struct list_head *next, *prev; }; #define LIST_HEAD_INIT(name) { &(name), &(name) }#define LIST_HEAD(name) struct li...原创 2019-01-02 14:07:00 · 180 阅读 · 0 评论 -
linux select函数
使用Select就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生则返回一个代码来告知事件未发生,而进程或线程继续执行,所以效率较高)方式工作的程序,它能够监视我们需要监视的文件描述符的变化情况——读写或是异常。下面详细介绍一下!1、select...原创 2019-01-27 16:25:50 · 1600 阅读 · 0 评论 -
Google test CheatSheet——open source
how to use gtestForDummies-- start here if you are new to Google Mock. CheatSheet-- a quick reference. CookBook-- recipes for doing various tasks using Google Mock. FrequentlyAskedQuestions--...原创 2019-02-21 21:42:08 · 617 阅读 · 0 评论 -
UDP的connect函数-读书笔记
UDP是一个无连接的协议,它没有像TCP中EOF之类的东西。8.11 UDP的connect函数除非套接字已连接,否则异步错误是不会反悔到UDP套接字的。我们确实可以给UDP套接字调用connect,然而这样做的结果却与TCP连接不同的是没有三路握手过程。内核只是检查是否存在立即可知的错误,记录对端的IP地址和端口号,然后立即返回调用进程。对于已连接UDP套接字,与默认的未连接UDP套接...原创 2019-02-16 18:29:29 · 239 阅读 · 0 评论 -
c++ 友元
友元(友元函数、友元类和友元成员函数) C++友元(frend)机制允许一个类将对其非公有成员的访问权授予指定的函数或者类,友元的声明以friend开始,它只能出现在类定义的内部,友元声明可以出现在类中的任何地方:友元不是授予友元关系的那个类的成员,所以它们不受其声明出现部分的访问控制影响。通常,将友元声明成组地放在类定义的开始或结尾是个好主意。1、友元函数友元函数是指非类成员却能够...原创 2019-03-26 14:29:53 · 272 阅读 · 0 评论 -
C++初始化列表
C++类构造函数初始化列表构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如:class CExample {public: int a; float b; //构造函数初始化列表 CExample(): a(0),b(8.8) {} //构造函数内部赋值 CExam...原创 2019-05-14 22:37:49 · 142 阅读 · 0 评论 -
Makefile 笔记
makefile文件转自//https://seisman.github.io/how-to-write-makefile/introduction.html#:= 前面的变量不能使用后面的变量,只能使用前面已定义好了的变量。+= 操作符给变量追加值?= ,先看示例:FOO ?= bar其含义是,如果FOO没有被定义过,那么变量FOO的值就是“bar”,如果FOO先...转载 2019-05-12 12:53:25 · 176 阅读 · 0 评论 -
C++ 标准库读书杂记8 浅析std::move
首先站在C ++ 的角度说一下左值和右值;右值:不具名的变量左值:具名变量其实呢概念上说不具名,隐含的意思就是作用域非常小的变量。站在内存的角度上没啥区别,主要在编译器角度上判断变量生命周期,他所在的地址是否可以再次被使用。那么这种在生命周期末尾的变量我们都可以叫做右值,所以右值我觉得描述的是即将被释放的变量。大可不必去纠结什么左值引用,右值引用,那是语法规则层面的东西。只要进去的...原创 2018-11-24 18:07:46 · 275 阅读 · 0 评论 -
c++11 类默认函数的控制:"=default" 和 "=delete"函数
转自:https://www.cnblogs.com/lsgxeva/p/7787438.html #define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>#include <vector>#include <map>//c++11 类默认函数的控制:"...转载 2018-11-19 15:50:22 · 141 阅读 · 0 评论 -
VS开发C++静态链接库
操作系统 win10IDE:vs2013搭建静态库工程: 1.新建工程; 2.win32控制台程序; 3.静态库; 4.预编译头、安全开发周期都不要选;这样生成一个干净的工程 5.项目添加自己的类; 6.配置输出路径,编译,生成静态库;使用静态库文件; 1.新建自己的工程; 2.添加静态库最外层需要调用的相关类的头文件; 3.配置附加包含目录头...原创 2018-03-09 00:44:59 · 310 阅读 · 0 评论 -
win32动态库生成和应用
操作系统 win10IDE:vs2013搭建动态库工程: 1.新建工程; 2.win32控制台程序; 3.dll工程,导出符号(会在项目属性,预处理器中自动添加 DLL_EXPORT,用以区分dll发开着和调入着在dll.h中的import和export); 4.关注dll.h dll.cpp dllmain.cpp: dllmain.cpp作用:http:...原创 2018-03-10 19:08:07 · 626 阅读 · 0 评论 -
C++11 特性学习
http://www.360doc.com/content/18/0320/13/53679236_738700085.shtml1.1、auto 编译器根据上下文情况,确定auto变量的真正类型。 auto a = 10;//int auto作为函数返回值时,只能用于定义函数,不能用于声明函数。 不要函数定义,直接在cpp中实现,即可。1.2、nullptr 关键字及用...转载 2018-03-20 14:38:37 · 211 阅读 · 0 评论 -
C++ 多态的实现及原理
转载:https://www.cnblogs.com/cxq0017/p/6074247.html 感谢: evilsnake愿我来世得菩提时 心若琉璃内外明澈C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数 1:用virt...转载 2018-04-11 15:43:22 · 139 阅读 · 0 评论 -
C++ 标准库读书杂记一
1.复杂度与Big-O标记;时间复杂度与个数无关;时间复杂度与个数呈对数关系;时间复杂度与个数呈线性关系;时间复杂度与个数对数与线性成绩关系;时间复杂度与个数呈平方关系考虑复杂度时,输入量必须足够大才有意义。2.一致性初始化(uniform initialization)和初值列 (initializer list)一致性初始化:int values[] {1,...原创 2018-08-28 01:13:08 · 188 阅读 · 0 评论 -
C++ 标准库读书杂记四
1.命名空间std::cout<<using std::cout;cout <<using namespace std;cout<<2.error and exceptionbase class :exception //<exception>exception list:bad_cast //dynamic_cas...原创 2018-08-31 00:22:20 · 201 阅读 · 0 评论 -
C++ 标准库读书杂记二
1.深入理解 explicithttps://blog.csdn.net/fengbingchun/article/details/51168728 C++中的关键字explicit主要是用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。类构造函数默认情况下声明为隐式的即implicit。隐式转换即是可以由单个实参来调用的构造函数定义...原创 2018-08-29 00:27:13 · 152 阅读 · 0 评论 -
C++ 标准库读书杂记三
1.R“”(元字符串)R"\\n" = "\\\\n" 转义字符更简单了,不需要多一个\\。在正则表达式中使用元字符更方便。元字符详细定义:R“字符序列()字符序列” ,字符序列由纯字母组成0-16个。2.L/U/u" "(编码字符)L:wchar_t U:char32_tu:char16_t3.noexcept指明某个函数不抛出异常。eg:void funct...原创 2018-08-30 00:14:01 · 165 阅读 · 0 评论 -
C++ 标准库读书杂记五
1.pair 可将两个value视为一个单元。pair是结构体,所以所有成员都是public的namespace std{ template <typename T1, typename T2> struct pair{ T1 first; T2 second; ... }}成员:pair<T1,T2> p...原创 2018-09-03 00:28:23 · 183 阅读 · 0 评论 -
探讨一下(i++)语意 不是什么先++ 后++
作者:弯弯的丝瓜函数func的定义如下: 1 2 3 4 5 voidfunc(constint& v1,constint& v2) { std::cout << v1 <<' '; std::cout << v2 <<' '; ...原创 2018-09-16 00:38:51 · 252 阅读 · 0 评论 -
C++ 标准库读书杂记6 Tuple
TupleA tuple is an object capable to hold a collection of elements. Each element can be of a different type.template <class... Types> class tuple;找到一个tuple模板:template<typename Head,...原创 2018-09-17 23:40:17 · 208 阅读 · 0 评论 -
C++ 标准库读书杂记7 Smart Pointer
C++没有内存回收机制,每次程序员new出来的对象需要手动delete,流程复杂时可能会漏掉delete,导致内存泄漏。于是C++引入智能指针,可用于动态资源管理,资源即对象的管理策略。使用 raw pointer 管理动态内存时,经常会遇到这样的问题:忘记delete内存,造成内存泄露。 出现异常时,不会执行delete,造成内存泄露。智能指针主要有三种:shared_ptr,uni...原创 2018-11-07 02:36:32 · 230 阅读 · 0 评论 -
C++ 容器
c++中有两种类型的容器:顺序容器和关联容器,顺序容器主要有:vector、list、deque等。其中vector表示一段连续的内存地址,基于数组的实现,list表示非连续的内存,基于链表实现。deque与vector类似,但是对于首元素提供删除和插入的双向支持。关联容器主要有map和set。map是key-value形式的,set是单值。map和set只能存放唯一的key值,multimap和...原创 2018-03-07 23:42:50 · 126 阅读 · 0 评论