C++
青石玄霄
吾生也有涯,而知也无涯
展开
-
类
C++中可以使用struct、class来定义一个类◼ struct和class的区别struct的默认成员权限是publicclass的默认成员权限是private//class Person {// // 成员变量(属性)// int age;//// // 成员函数(方法)// void run() {// cout << "Person::run()" << endl;// }//};// 语法糖层面、概念层面// classstr原创 2021-05-31 22:54:54 · 85 阅读 · 0 评论 -
STL容器
vector map list原创 2021-05-27 23:48:43 · 73 阅读 · 0 评论 -
单例模式
单例模式原创 2021-05-27 23:42:56 · 97 阅读 · 0 评论 -
static
static原创 2021-05-27 23:40:54 · 86 阅读 · 0 评论 -
const
const的作用原创 2021-05-27 23:39:28 · 444 阅读 · 0 评论 -
C++基础
模板原创 2021-05-27 23:28:19 · 124 阅读 · 0 评论 -
运算符重载
运算符重载(操作符重载):可以为运算符增加一些新的功能class Point {public: int m_x; int m_y; Point(int x, int y) :m_x(x), m_y(y) {} void display() { cout << "(" << m_x << ", " << m_y << ")" << endl; } Point(const Point &point) {原创 2021-05-27 22:40:51 · 143 阅读 · 0 评论 -
模板
泛型,是一种将类型参数化以达到代码复用的技术,C++中使用模板来实现泛型模板的使用格式如下template <typename\class T>typename和class是等价的模板没有被使用时,是不会被实例化出来的模板的声明和实现如果分离到.h和.cpp中,会导致链接错误一般将模板的声明和实现统一放到一个.hpp文件中...原创 2021-05-26 23:58:40 · 89 阅读 · 0 评论 -
智能指针
传统指针存在的问题需要手动管理内存,容易发生内存泄露(忘记释放、出现异常等),释放之后产生野指针智能指针的简单实现原创 2021-05-26 23:05:44 · 82 阅读 · 0 评论 -
C++类型转换
四种cast转换C++中四种类型转换是:static_cast, dynamic_cast, const_cast, reinterpret_caststaic_cast常用于基本数据类型的转换、非const转成const,对比dynamic_cast,缺乏运行时安全检测,不能交叉转换(不是同一继承体系的,无法转换)const_cast一般用于去除const属性,将const转换成非constconst Person *p1 = new Person();Person *p2 =原创 2021-05-26 22:51:57 · 88 阅读 · 0 评论 -
内联函数和宏
使用inline修饰函数的声明或者实现,可以使其变成内联函数建议声明和实现都增加inline修饰特点编译器会将函数调用直接展开为函数体代码可以减少函数调用的开销会增大代码体积注意尽量不要内联超过10行代码的函数有些函数即使声明为inline,也不一定会被编译器内联,比如递归函数◼ 内联函数和宏,都可以减少函数调用的开销◼ 对比宏,内联函数多了语法检测和函数特性inline int sum(int x) { return x + x; }#define..原创 2021-05-25 22:50:59 · 128 阅读 · 0 评论 -
求最小的k个数
给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组方法一:排序直接排序class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { vector<int> ret; if (k==0原创 2021-05-20 23:26:55 · 115 阅读 · 0 评论 -
用两个栈实现队列
static关键字的作用1. 全局静态变量在全局变量前加上关键字static,全局变量就定义成一个全局静态变量.静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。2. 局部静态变量在局部变量之前加上关键字static,局部变量就成为一个局部静态变量。内存中的位置:静态存储区初始化:未经初始化的全局静.原创 2021-05-07 21:30:43 · 91 阅读 · 0 评论 -
友元函数
友元包括友元函数和友元类◼ 如果将函数A(非成员函数)声明为类C的友元函数,那么函数A就能直接访问类C对象的所有成员◼ 如果将类A声明为类C的友元类,那么类A的所有成员函数都能直接访问类C对象的所有成员◼ 友元破坏了面向对象的封装性,但在某些频繁访问成员变量的地方可以提高性能class Point { friend Point add(Point, Point);private: int m_x; int m_y;public: int getX() { return m_x;...原创 2021-04-12 22:45:47 · 112 阅读 · 0 评论 -
构造函数
拷贝构造函数形式是固定的,参数是const 带 类名的引用Car(const Car& car)拷贝构造函数是利用已存在的对象创建一个新的对象Car car1;Car car2(car1);原创 2021-04-07 22:49:40 · 163 阅读 · 0 评论 -
菱形继承
原创 2021-03-30 22:58:32 · 93 阅读 · 0 评论 -
虚函数
父类指针可以指向子类对象原创 2021-03-25 23:02:08 · 352 阅读 · 0 评论 -
应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。解决方案
笔者近日到某地部署一个接入网关服务器,将程序拷贝到服务器Windows server 2008上面,搭配好了环境和参数,点击运行我的程序时,出现了下图错误出现这原因的是我用了的dll是32位的,而服务器是64位的,我将某些dll库换成64位的,就解决了该问题。原创 2016-04-29 22:41:31 · 4938 阅读 · 0 评论 -
利用Jrtplib转发rtp包
最近有接触都GB28181,涉及到ps格式的rtp包转发,就是摄像机推流到流媒体服务器,流媒体服务器再利用jrtplib库将流转发给客户端,下面给出单路转发的代码。 RTPSession session; WSADATA dat; WSAStartup(MAKEWORD(2, 2), &dat); RTPSessionParams sessionparams; sessionp原创 2016-08-20 15:35:02 · 4483 阅读 · 1 评论 -
auto
modern c++ 新的关键字auto类型推导,先说好处。int x; 这个语句有潜在的未初始化风险。auto所修饰的变量必须被初始化,当我们使用auto时,一系列由未初始化的变量带来的问题就ヾ(ToT)Bye~Bye~了。另一个作用就是将啰嗦的变量声明简化,有人会说类型不直观,要直观首先保证你的代码在使用显式声明的前提下更清晰,可维护性更高,并且没有写错。比如std...原创 2018-09-09 21:34:51 · 281 阅读 · 0 评论 -
std::function
std::function是c++11标准库中的一个模板,是可调用对象的包装器。可调用对象有如下几种定义:函数指针,类成员指针 具有operator() 成员函数的类对象(仿函数) 可被转换成为函数指针的类对象如果你需要创建一个std::function对象就必须指定想要指涉的函数的类型(返回值和参数表)举个栗子,声明一个名为func的std::function对象,它可以指涉到任...原创 2018-09-08 23:30:59 · 1431 阅读 · 0 评论 -
c++ 类型推导
函数模板大致如下:template<typename T>void f(ParamType param);调用的时候 f(expr);在编译期,编译器会通过expr来推导T的类型和ParamType的类型,这两个类型不一定是一样的。模板型别推导分三种情况,template<typename T>void f(T& param); /...原创 2018-09-07 22:26:32 · 664 阅读 · 0 评论 -
Effective Modern C++导读笔记
1、关于甄别表达式是左值还是右值,就是看能不能对表达式取地址,如果能,则为左值,否则为右值。2、右值的副本通常由移动构造函数创建,而左值的副本通常由复制构造函数创建。3、函数形参都是左值,实参可能是左值,也可能是右值。4、经由lambda表达式创建的函数对象称为闭包。5、声明的作用是引入名字和类型,而不给出细节,如存储位置或具体实现。6、定义则会给出存储位置和具体实现的细节。...原创 2018-09-06 23:08:06 · 197 阅读 · 0 评论 -
C基础笔记
1、数据类型是固定内存大小的别名;2、int b[10]; b代表首元素的地址,&b代表数组的地址,b+1和&b+1是不一样的,他们代表的步长不一样;3、内存四区,栈区,堆区,常量区,代码区(机器加载到内存),栈区先进后出,栈上内存会析构,一个程序只有一个内存四区;4、return不是把内存块return出来,而是把内存的首地址返回;5、指针也是一种变量,*p放...原创 2018-09-22 21:12:04 · 146 阅读 · 0 评论 -
28181接入网关查询NVR录像文件
使用公安spvmn的调测软件测试,下发如下命令:RecordInfo17430340200000011100000012016-05-11T19:46:172016-05-12T19:46:170time为了方便我将nvr的ID改为111,按编码规则应该是118,发送上述命令后,设备返回:MESSAGE sip:34020000001310000001@340200原创 2016-05-12 10:22:35 · 5206 阅读 · 0 评论