
C++
文章平均质量分 61
急支糖浆123
夜晚越黑暗,星星就越明亮。。。
展开
-
c++引用折叠,万能引用,完美转发
引用折叠template<typename T>void print(T &&t){}在使用如上的模板函数时,如果T的类型为T&或者T&&,则形参t的类型对应为T& &&或者T && &&。此时形成了引用的引用,从而会发生引用折叠,引用折叠规则如下:引用1 引用2 折叠结果 & & & & &&原创 2022-05-20 10:58:17 · 1325 阅读 · 1 评论 -
va_list语法
va_list(1)va_list类型,定义该类型变量来指向可变参数的地址。它的定义为:typedef char * va_list;(2)va_start(va_list, arg),va_start初始化va_list变量,使得va_list变量指向可变参数列表第一个参数的地址,第二个参数固定为可变参数列表(…)左边第一个参数。它的定义为:#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) -原创 2020-11-26 09:43:02 · 5013 阅读 · 0 评论 -
rgb24转yuv420P
本文记录了将rgb24的像素数据转为yuv420P的像素数据的方法1.直接使用公式,遍历rgb每个像素点并将rgb格式转换为yuv格式static void rgb2yuv420(int w, int h, uint8_t *rgb, uint8_t *yuv){ int pixsize; int pixIndex; uint8_t *y,*u,*v; int...原创 2020-02-14 15:30:06 · 1660 阅读 · 0 评论 -
C++类模板
类模板C++的类模板为生成通用的类声明提供了一种很好的方法。模板提供参数化类型,即能够将类型名作为参数传递给接收方来建立类或函数。例如,将类型名int,传递给AA模板,可以让编译器构造一个对int进行处理的AA类。定义类模板正常定义一个处理int类型的类如下:class AA { public: AA(){} ~AA(){ } void print(co...原创 2019-07-27 19:22:59 · 175 阅读 · 0 评论 -
C++类模板的具体化
显示具体化首先在.h头文件定义个类模板,如下#pragma once#include <iostream>//通用模板类型template<class T1, class T2>class AA{public: void print();};template<class T1, class T2>void AA<T1, T2>...原创 2019-07-27 18:45:52 · 1768 阅读 · 0 评论 -
C++模板编译
普通类成员函数编译和链接编译普通类成员函数可以将函数声明和函数定义分别放在.h头文件和.cpp源文件。在编译时,每个.cpp文件是一个编译单元,各个编译单元互相是不可知的。编译器会将.cpp文件中使用的头文件展开,然后经过编译、汇编将源文件生成.obj目标文件(机器代码)。链接每个.obj都有一个未解决符号表和导出符号表。未解决符号表是源文件使用的外部符号,需要连接器告诉其定义。导出符号表...原创 2019-07-27 08:39:35 · 384 阅读 · 0 评论 -
lambda表达式语法C++11
lambda表达式lambda函数,也叫lambda表达式(简称为lambda),是C++11提供的一种匿名函数-即无需给函数命名。在C++11中,对于接受函数指针或函数符(函数对象)的函数,可使用匿名函数定义(lambda)作为其参数。lambda语法Lambda表达式语法:捕获列表修饰符->返回值类型{函数体};捕获列表:[]是lambda的引出符,编译器根据引出符判断接下来是否...原创 2019-07-22 09:48:59 · 592 阅读 · 0 评论 -
C++ bind函数及function函数包装器
函数包装器function特征标:是由返回类型以及括号括起并用逗号分隔的参数类型比列表定义的。函数包装器function:是在头文件functional中声明的,它从调用特征标的角度定义了一个对象,可用于包装调用特征标相同的函数指针、函数对象或lambda表达式。function语法:function<返回类型(参数1类型, 参数2类型,…)> fc;例如,下面声明创建一个名为...原创 2019-07-18 08:37:03 · 442 阅读 · 0 评论 -
C++移动语义(右值引用)
最近觉得应该多看看C++的新特性,否则别人代码中用到,自己不熟悉,看代码的效率就比较低。本周抽时间看了看移动语义,在这里简单介绍下:我们都知道深拷贝和浅拷贝,浅拷贝是两个变量指向同一块区域,这样删除对象的时候会删除内存同一块区域两次,有崩溃的风险;深拷贝是指原对象删除已有空间,然后重新开辟空间,并把参数对象的内容复制过来,两个对象两个空间,相对安全。但深拷贝临时对象会有一个效率问题,比如下面例子...原创 2019-07-12 18:05:52 · 248 阅读 · 0 评论 -
C++虚继承内存分布
本周抽空看虚继承的时候,研究了下虚继承的对象的内存分布,C++虚继承主要解决了菱形继承访问不明确的问题。上述继承关系,定义DD对象的构造函数输出如下:AA BB AA CC DD,对象中存在两份AA。若AA存在成员变量,访问该变量时会出现访问不明确的错误。使用虚继承后可解决该问题:构造函数输出为AA BB CC DD,对象只存在一份AA。这是因为虚继承会生成一个虚基表指针vbptr(与虚函...原创 2019-06-01 13:57:20 · 1004 阅读 · 0 评论