
C/C++
文章平均质量分 93
justkong
专注于网络通信,音视频处理
展开
-
函数指针和成员函数指针
1、函数指针(1)定义int (*pFunc1)(int param1,int param2);typedef int (*TFunc)(int param1,int param2);TFunc pFunc2;(2)赋值和调用int Add(int param1,int param2);pFunc1 = Add;pFunc1(1,2);pFunc2 = Add...原创 2020-03-18 09:42:11 · 686 阅读 · 0 评论 -
C++类模板
一、定义(1)类模板通常应用于数据结构方面,使得类的实现不在关注数据元素的具体类型,而只关注需要实现的功能比如: 数组类,链表类,Queue类,Stack类等(2)类模板和函数模板一样,定义和实现必须都在头文件中(3)类模板中的成员函数可以在类外进行实现,但是必须加上template<typename T>的声明,以及模板类型的声明template<typen...转载 2020-03-13 15:39:59 · 462 阅读 · 0 评论 -
C++函数模板
一、定义(1)通过template关键字来声明使用模板(2)通过typename或者class关键字来定义模板类型template<typename T1, typename T2>void Func(T1 objT1, T2 objT2){//函数内部逻辑省略}二、调用(1)自动调用int a = 0;int b = 10;Func(a...转载 2020-03-13 14:58:43 · 220 阅读 · 0 评论 -
define中#、##、#@分别表示什么
1. #字符串化,例如:#define LogMessage(a) printf("The message is: %s", #a); LogMessage(WARNING) //The message is:WARNINGstring ppp="abcdef";LogMessage(ppp) //The message is: ppp; not "abc...转载 2020-03-12 16:52:35 · 1176 阅读 · 0 评论 -
大小端模式和结构体中成员变量的内存分布
一.大端模式和小端模式计算机系统中,每个地址单元对应一个字节(8bit),一种数据类型可能占用多个字节,如何安排这种数据类型中的每个字节,哪个字节在低地址,哪个在高地址,以及每个字节中比特序在内存中的位置,这就涉及到大小端模式。一般情况下,字节序和比特序的排列规则是一致的。我们在书写和计算中数据数据分为高位和低位,高位在左边,低位在右边,例如0x6401中,0x64为高位,0x01为低位。...原创 2020-03-10 13:58:33 · 4875 阅读 · 1 评论 -
STL vector按多字段值排序
1 #include <iostream> 2 #include <vector> 3 #include <string> 4 #include <algorithm> 5 using namespace std; 6 7 class Student 8 { 9 private: 10 int i...原创 2014-11-24 13:01:00 · 231 阅读 · 0 评论 -
C++复制控制
1.复制构造函数可用于:(1)根据另一个同类型的对象显示或隐式初始化一个对象string str1="test"; //隐式string str2=str1; //显示str1为先调用string的字符串形参的构造函数,创建一个临时对象,然后,使用string复制构造函数将str1初始化为那个临时对象的副本。(2)复制一个对象,将它作为实参传给一个函数(3)从函数...原创 2014-06-16 20:28:00 · 105 阅读 · 0 评论 -
循环buffer的实现
1.循环buffer的特点1、先进先出2、当空闲缓冲区用完,且又有新的数据需要存储时,覆盖历史数据,保存新的数据3、环形缓冲区在实现时采用的是线型的存储结构4、线型存储中需要四个指针,分别为缓冲区首地址指针(pHead)、尾地址指针(pTail)、有效数据起始指针(pValid)、有效数据尾指针(pValidTail)。其中pValid<pValidTail或者pValid...转载 2019-08-07 11:23:28 · 4046 阅读 · 0 评论 -
C++内联函数
一、如何定义非类成员函数,在函数定义处(不是声明处)增加inline关键字。类成员函数,在类体内部(类定义头文件中)定义的函数默认就是内联函数。二、内联函数的优缺点常规函数调用时,程序需要由主程序根据函数地址跳转到函数执行处,函数执行完后再跳转回主程序,函数来回跳转需要一定的开销。而内联函数在编译过程中将函数代码和主程序代码“内联”起来,对于内联代码,程序在执行时无需跳转,运行速度...原创 2019-10-11 10:10:36 · 464 阅读 · 0 评论 -
C++11--匿名函数(Lambda函数)
一、定义lambda是一种匿名函数,即没有函数名的函数。lambda函数的语法定义为:[捕捉列表] (参数) mutable -> 返回值类型 {函数体}二、[捕捉列表],定义能够捕获的函数外的变量,通俗地说捕获就是匿名函数外所在作用域内的变量,这些变量可以在函数体内部调用。捕获有两种形式,按值捕获和按引用捕获。按值捕获的变量相当于和函数外作用域内同名的一个变量,在函数内对改变量...转载 2019-10-11 11:03:38 · 2797 阅读 · 0 评论 -
std::map
1.例:map<int,string> m_mapTest;m_mapTest.insert(make_pair(1,"kong"));m_mapTest.insert(make_pair(2,"yang"));m_mapTest.insert(make_pair(1,"hello1"));m_mapTest.insert(make_pair(3,"hello3"));m...原创 2015-09-05 09:08:00 · 129 阅读 · 0 评论 -
枚举
1.枚举类型的作用我们在写程序的时候,常常需要定义一组与对象相关的属性。例如某个函数形参类型定义为枚举类型,如果传递实参的时候不是枚举类型定义的枚举子,则编译出错,即使传递的值和枚举子的值一样,也会报错,除非强制转换成枚举类型。2.枚举类型的定义enum [enumeration name]{enumerator1[=value1],enumerator2[=value2]...原创 2015-12-09 21:53:00 · 115 阅读 · 0 评论 -
C++中public/protect/private三种访问权限控制
一、成员访问权限控制1、public(1)public成员变量可以被成员函数访问 [访问性](2)public成员可以被实体对象访问 [访问性](3)public成员可以成为子类成员 [对子类的继承性]2、protect(1)protect成员变量可以被成员函数访问 [访问性](2)protect成员可以成为子类成员 [对子类的继承性]3、private...原创 2018-05-21 16:30:00 · 3162 阅读 · 0 评论 -
运算符重载与友元函数
一、概述 C++预定义的运算符的操作对象只能是基本数据类型,但是实际上许多用户自定义类型(例如类),也需要类似的运算符操作,C++可以通过运算符重载来满足这种需求。运算符重载本质就是函数重载,也是C++多态的一种形式。运算符重载是通过创建运算符函数实现的,和其他函数类似,唯一的区别是函数名为关键字operator和运算符符号组成。二、运算符重载限制(1)至少有一个操作数是自定义类型,...原创 2018-04-11 14:48:00 · 730 阅读 · 0 评论 -
类的类型转换和转换函数
一、概述 不同基本数据类型间可以进行类型转换。有的可以自动类型转换,例如将int类型值赋值给long型变量。对于完全不兼容的类型,如果要进行类型转换只能通过强制类型转换。同样的,类类型也可以与其他数据类型进行类型转换。二、自动类型转换 如果类定义了一个构造函数,这个构造函数只有一个参数,则可以将参数对应类型的变量自动转换为类类型。例如: class String {...原创 2018-04-11 14:16:00 · 1438 阅读 · 0 评论 -
C++内存模型
1、存储持续性C++使用四种不同方案来存储数据,它们的区别在于数据在内存中保留的时间,也叫做存储持续性(1)自动存储持续性 在函数定义中声明的变量,包括函数参数。(2)静态存储持续性 在函数定义外和使用关键字static定义的变量。它们在程序整个运行过程中都存在。(3)线程存储持续性 在C++11中,如果使用关键字thread_local声明变量,则变量生命期和所...原创 2018-04-10 11:31:00 · 158 阅读 · 0 评论 -
智能指针
一、std::auto_ptr1、auto_ptr的构造函数接受原始指针作为参数,虽然它是一个对象,但是重载了operator*和operator->,可以把它用在大多数普通指针可用的地方。当退出作用域时,auto_ptr对象的析构函数会释放原始指针。例:int main{auto_ptr<ClassA> p(new ClassA);}二、boost:...原创 2017-05-27 14:47:00 · 119 阅读 · 0 评论 -
const成员函数和mutable关键字
一、const成员函数class MyClass{public: void fun() const { }private: int m_nValue;}const成员函数内不能修改成员变量的值,也不能调用非const成员函数。const对象只能调用const成员函数。二、mutable关键字class MyClass{public:...原创 2017-01-20 15:42:00 · 203 阅读 · 0 评论 -
c/c++时间操作函数总结
一、时区相关概念地球自西往东转动,东边比西边先看到太阳,所以东边的时间比西边的时间早。将地球经度按照24个时区进行划分,每个时区相隔的经度为15度。以英国伦敦(格林尼治天文台旧址)为中时区(零时区),向东有11个时区,向西也有11个时区,太平洋白令海峡所在经度为12区,东西各占一半。0时区向东每隔一个时区时间快1小时,向西每隔一个时区时间慢1小时。在12区中间,左边刚好比右边日期大1天。U...原创 2019-07-27 10:49:28 · 2411 阅读 · 0 评论 -
Effective C++阅读笔记_条款2:尽量以const,enum,inline替换#define
1.#define缺点1#define NUM 1.2记号NUM可能没有进入记号表,在调试或者错误信息中,无法知道1.2的含义。改善:通过const int NUM = 1.2;2.#deine缺点2无法利用#define创建一个class专属常量,一旦宏被定义,它就在其后的编译过程中有效(除非遇到#undef)。改善:可以通过const成员变量来满足要求。3.cons...原创 2015-12-09 22:13:00 · 163 阅读 · 0 评论 -
C++多态、虚函数、纯虚函数、抽象类、虚基类
一、C++多态C++的多态包括静态多态和动态多态。静态多态包括函数重载和泛型编程,动态多态包括虚函数。静态多态是指在编译期间就可以确定,动态多态是指在程序运行时才能确定。二、虚函数1、虚函数为类的非静态成员函数,访问权限一般为public。函数声明时,在返回值前加virtual关键字,函数定义时不需要加virtual。父类定义的虚函数,子类在继承时,可以对虚函数重新定义,当然子类的函数...原创 2018-05-25 09:01:00 · 259 阅读 · 0 评论