![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
各类功能函数学习
Still_Believe_
爱好编程C++,Java,Python。github主页:https://github.com/klc407073648
展开
-
面向对象编程中composition、aggregation、association的区别
在面向对象程序设计中,对象的关系主要有三种:composition、aggregation、association:composition(组合/复合),对象x的生命期由唯一拥有者owner控制,owner析构时会把x同步析构。例如Engine是Car的一部分。脱离Car的Engine是没有实在意义的,即表示Part-of 关系。 aggregation(聚合),是一种特殊的联系,它表明了“部分”到“整体”的关系。例如Person有一个Address,但是Addess的存在是不依赖Person的,即表原创 2020-12-12 08:23:33 · 2163 阅读 · 2 评论 -
C++11特性:bind和function函数使用
目录1. std::bind2. std::function1. std::bindstd::bind 的函数原型:simple(1): template <class Fn, class... Args> /* unspecified */ bind (Fn&& fn, Args&&... args);with return type (2):template <class Ret, class Fn, class...原创 2020-12-06 19:24:44 · 364 阅读 · 0 评论 -
getopt()函数分析以及命令行解析
在Linux下运行可执行程序时,一般需要带特定参数以指定运行的方式。通过是采用getopt()函数解析传入的参数内容,其头文件为<unistd.h>。下面来具体介绍getopt的原型:int getopt(int argc,char * const argv[ ],const char * optstring);参数argc和argv分别代表参数个数和内容,参数 optstring为选项字符串。getopt() 所设置的全局变量包括:extern char *optarg;原创 2020-12-06 15:48:54 · 380 阅读 · 0 评论 -
在C++中使用Protobuf
ProtoBuf在中C++使用介绍ProtoBuf的定义和描述:Protocol Buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。 Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。 你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,原创 2020-11-25 21:52:49 · 9222 阅读 · 0 评论 -
struct iovec 结构体定义与使用
1. struct iovec概述struct iovec定义了一个向量元素。通常,这个结构用作一个多元素的数组。对于每一个传输的元素,指针成员iov_base指向一个缓冲区,这个缓冲区是存放的是readv所接收的数据或是writev将要发送的数据。成员iov_len在各种情况下分别确定了接收的最大长度以及实际写入的长度。且iovec结构是用于scatter/gather IO的。Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Ch原创 2020-11-21 08:57:40 · 7985 阅读 · 1 评论 -
typedef 语句的使用
1.使用typedef定义数组类型1. 1一维数组类型的定义格式typedef <元素类型关键字><数组类型名>[<常量表达式>];例如:(1) typedef int intArr[10];(2) typedef std::string stringArr[20];(3) typedef int array[N];1.2. 二维数组类型的定义格式typedef <元素类型关键字><数组类型名>[<常量表达式1>原创 2020-10-01 15:45:19 · 388 阅读 · 0 评论 -
C++智能指针——shared_ptr的使用
1.智能指针介绍在C++中,动态内存的管理是通过成对运算符new和delete来完成的。new在动态内存中为对象分配空间并返回一个指向该对象的指针,可以选择对对象进行初始化;delete接受一个动态对象的指针,销毁该对象,并释放与之关联的内存。因为动态内存的申请和释放都是由程序员自己管理的,容易导致堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题。因此,引入了智能指针的概念,通过智能指针来管理,析构的时候会自动释放其内存。C++11标准库提供了两种智能指针(smart pointe原创 2020-10-01 11:07:53 · 1323 阅读 · 0 评论 -
va_list函数学习(va_start,va_end, vasprintf)
使用场景描述:当函数的入参个数不确定时,使用va_list函数进行动态处理,增加编程的灵活性。1.va_list 使用方法以及注意事项:1.1使用方法:1) 首先在函数中定义一个具有va_list型的变量,这个变量是指向参数的指针。2) 然后用va_start宏初始化变量刚定义的va_list变量,使其指向第一个可变参数的地址。3) 然后va_arg返回可变参数,va_...原创 2020-05-02 09:46:17 · 3971 阅读 · 2 评论 -
C++ 作用域运算符::的使用
C++的::符合代表作用域运算符,例如MyClass的成员函数myfun,会写成MyClass::myFun,表示为MyClass中的myFun函数。但是还存在另外一种情况,就是前面没有作用域名,而是只有::加函数名的情况。这表示全局作用域,即所调用的函数是全局函数。#include <iostream>using namespace std;// 全局函数void...原创 2020-04-27 08:01:03 · 539 阅读 · 0 评论