C++
jeffasd
这个作者很懒,什么都没留下…
展开
-
C++11新特性 模板参数默认类型
//// main.m// test_cpp_template_01//// Created by jeffasd on 2017/10/1.// Copyright © 2017年 jeffasd. All rights reserved.//// C++11新特性 模板参数默认类型#include <string>#include <iostr...原创 2018-12-01 18:38:43 · 3972 阅读 · 0 评论 -
scanf sscanf 中的%[^\n]%*c格式
https://blog.csdn.net/q_l_s/article/details/22572777scanf sscanf语法: #include <stdio.h> int scanf( const char *format, ... ); 类似函数有 int scanf(const char *format, ...); int fscanf(F...转载 2018-06-15 14:58:08 · 17855 阅读 · 1 评论 -
C++11实现自旋锁
原文地址: https://blog.poxiao.me/p/spinlock-implementation-in-cpp11/自旋锁(Spinlock)自旋锁是一种用于保护多线程共享资源的锁,与一般的互斥锁(mutex)不同之处在于当自旋锁尝试获取锁的所有权时会以忙等待(busy waiting)的形式不断的循环检查锁是否可用。在多处理器环境中对持有锁时间较短的程序来说使用自旋锁代替一般的互斥锁...转载 2018-06-12 10:24:20 · 3783 阅读 · 0 评论 -
C++ 函数重载 详解
http://blog.csdn.net/zhanghow/article/details/53588458在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如希望交换两个变量的值,这两个变量有多种类型,可以是 int、float、char、bool 等,我们需要通过参数把变量的地址传入函数内部。在C语言中,程序员往往需要分别设计出三个不同名的函数,其函数原型与下面类似:vo...转载 2018-02-09 11:04:29 · 588 阅读 · 0 评论 -
C语言 混合编程中的export 、import和extern
http://blog.csdn.net/simanstar/article/details/22384961【IMPORT 】: 语法格式: IMPORT 符号 {[WEAK]} IMPORT 伪操作告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符号,而且不论本源文件是否实际引用该符号,该符号均会被加入到本源文件的符号表中。(与下面的EXT...转载 2018-02-09 11:03:27 · 8245 阅读 · 0 评论 -
C/C++中extern关键字详解
https://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.htmlexternextern意为“外来的”,是存储类声明修饰符。这个关键字在C语言中即很不明确,容易被混淆(尤其是extern inline——好在C++没有这种用法)。extern表示被修饰的声明中,名称的链接保持和之前的一致(若已有相同声明存在),或保持默认值(若...转载 2018-02-09 11:01:42 · 531 阅读 · 0 评论 -
C++中 export关键字的使用
https://www.cnblogs.com/onlycxue/archive/2012/12/22/2828863.htmlexport导出模版,用于分离编译。当初标准委员会未经充分实践支持匆忙通过了这一决定,被EDG证明具备不现实的可用性(即便EDG唯一地实现了这一个特性,他们也表示反对)[7] 。MSVC、GCC、Clang等其它主流编译器前端都没有实现这一特性,甚至这是唯一明显约定不符...转载 2018-02-09 10:58:17 · 9115 阅读 · 0 评论 -
Circular Buffer of Raw Binary Data in C++
http://www.asawicki.info/news_1468_circular_buffer_of_raw_binary_data_in_c.htmlC++ video cyclic buffer https://github.com/lmtanco/videoDelayLinehttp://www.boost.org/doc/libs/1_39_0/libs/circular翻译 2017-12-07 21:25:24 · 432 阅读 · 0 评论 -
C++运算符重载详解
http://www.cnblogs.com/balingybj/p/4772843.html一般运算符重载在进行对象之间的运算时,程序会调用与运算符相对应的函数进行处理,所以运算符重载有两种方式:成员函数和友元函数。成员函数的形式比较简单,就是在类里面定义了一个与操作符相关的函数。友元函数因为没有this指针,所以形参会多一个。// 运算符重载,这里又叫赋值函数转载 2017-10-25 14:45:28 · 577 阅读 · 0 评论 -
C++_运算符重载 总结
http://www.cnblogs.com/sexybear/p/4551742.htmlC++_运算符重载 总结什么是运算符的重载? 运算符与类结合,产生新的含义。 为什么要引入运算符重载? 作用:为了实现类的多态性(多态是指一个函数名有多种含义)怎么实现运算符的重载?方式:类的成员转载 2017-10-25 14:43:47 · 419 阅读 · 0 评论 -
深入分析C++赋值运算符重载函数(operator=)
http://www.cnblogs.com/zpcdbky/p/5027481.html关于C++的赋值运算符重载函数(operator=),网络以及各种教材上都有很多介绍,但可惜的是,内容大多雷同且不全面。面对这一局面,在下在整合各种资源及融入个人理解的基础上,整理出一篇较为全面/详尽的文章,以飨读者。正文:Ⅰ.举例例1#include#i转载 2017-10-25 14:42:22 · 494 阅读 · 0 评论 -
C++11智能指针shared_ptr、weak_ptr、unique_ptr用法详解
转载自:https://www.debugself.com/archives/89智能指针智能指针,是一种特殊的指针,它可以自动释放new出来的指针,不需要程序员手动调用delete即可释放;智能指针的原理智能指针是一个包装类,内部包装了真正的数据指针(即new出来的内存地址)和一个引用计数。当构造智能指针时(即智能指针的构造函数或者复制构造函数被调用时),引用计数会加1;...转载 2018-10-25 15:34:40 · 958 阅读 · 0 评论 -
C++11 智能指针详解
//// SmartPointer.cpp// test_cpp_protocol_01//// Created by jeffasd on 2016/10/24.// Copyright © 2016年 jeffasd. All rights reserved.//#include "SmartPointer.h"#include <stdio.h>#i...原创 2018-10-25 15:36:30 · 506 阅读 · 0 评论 -
C++ nullptr 源代码详细分析
nullptr 源代码// -*- C++ -*-//===--------------------------- __nullptr --------------------------------===////// The LLVM Compiler Infrastructure//// This file is dual license...原创 2018-12-01 15:17:01 · 1420 阅读 · 0 评论 -
std::enable_if 的几种用法
https://yixinglu.gitlab.io/enable_if.htmlstd::enable_if 顾名思义,满足条件时类型有效。作为选择类型的小工具,其广泛的应用在 C++ 的模板元编程(meta programming)中。它的定义也异常的简单:template <bool, typename T=void>struct enable_if {};te...转载 2018-11-30 19:51:45 · 51285 阅读 · 6 评论 -
C++ enable_if的使用
http://www.fuzihao.org/blog/2016/07/14/C-enable-if%E7%9A%84%E4%BD%BF%E7%94%A8/C++的enable_if常用于构建需要根据不同的类型的条件实例化不同模板的时候。本文主要讲了enable_if的使用场景和使用方式。 ## 函数重载的缺陷 函数重载能解决同名函数针对不同传入参数类型而实现不同的功能。举一个简单的例子:...转载 2018-11-30 19:50:26 · 10274 阅读 · 0 评论 -
C++11 SFINAE and enable_if 详解
https://eli.thegreenplace.net/2014/sfinae-and-enable_if/There's an interesting issue one has to consider when mixing function overloading with templates in C++. The problem with templates is that th...翻译 2018-11-30 19:49:22 · 926 阅读 · 1 评论 -
字符编码的概念(UTF-8、UTF-16、UTF-32详解)
原文:https://blog.csdn.net/guxiaonuan/article/details/78678043 字符集为每个字符分配了一个唯一的编号,通过这个编号就能找到对应的字符。在编程过程中我们经常会使用字符,而使用字符的前提就是把字符放入内存中,毫无疑问,放入内存中的仅仅是字符的编号,而不是真正的字符实体。这就抛出了一个问题,如何才能将字符编号放入内存中呢?对于 ASC...转载 2018-11-15 10:58:40 · 943 阅读 · 0 评论 -
C++接口协议的实现 类似OC的协议(protocol)
//// Person.hpp// test_cpp_protocol_01//// Created by jeffasd on 2016/10/23.// Copyright © 2016年 jeffasd. All rights reserved.//#ifndef Person_hpp#define Person_hpp#include <string&...原创 2018-10-24 14:18:38 · 1266 阅读 · 0 评论 -
C++模板:函数模板、类模板、模板与继承
原文:https://blog.csdn.net/xiaoding133/article/details/11662183 C++模板:描述 C++提供一种模板的机制来减少代码重复。比如:对于同一样函数使用不同的数据类型,int,double,char等。C++模板属于“元编程”的范畴。C++ 模板函数 1.支持不同数据类型的函数...转载 2018-10-23 20:57:55 · 417 阅读 · 0 评论 -
C++模板中声明和定义是否可以分开存放在.h和.cpp文件中
https://blog.csdn.net/u013403052/article/details/52788230虽然我们遇到的绝大多数情况下,模板中函数的声明和定义都放在头文件中,但我想肯定有人和我一样,想知道是否可以分开存放。动手实验后,会发现有的可以,有的会报错,其实,这和编译器有关。 要弄清楚这个问题,首先要解决两个问题。 第一,为什么要把函数的声明...转载 2018-10-23 20:40:27 · 2095 阅读 · 0 评论 -
c++模板函数声明和定义分离
https://blog.csdn.net/petersmart123/article/details/52649827c++模板不支持分离编译, 把你模板类的声明和实现放到.h文件里面 。按照这个说的把.h和.cpp文件合并后,果然可以了。但是为什么呢,为什么模板就不支持分离编译?---继续google ing搜到了如下文章(文章原文链接:http://blog.csdn.net/b...转载 2018-10-23 20:39:40 · 2422 阅读 · 0 评论 -
关于C++编译链接和模板函数
https://www.cnblogs.com/xcywt/p/8039574.html一,关于编译链接编译指的的把编译单元生成目标文件的过程链接是把目标文件链接到一起的过程编译单元:可以认为是一个.c或者.cpp文件。每个编译单元经过预处理会得到一个临时的编译单元。预处理会间接包含其他文件还会展开宏调用。每个编译单元编译成目标文件后会暴露自己内部的符号。(比如有个fun函数,就会暴露...转载 2018-10-23 20:38:25 · 377 阅读 · 0 评论 -
c++ 内联函数 (讲解的真好)
http://blog.csdn.net/u011327981/article/details/506018001. 内联函数在C++中我们通常定义以下函数来求两个整数的最大值:复制代码 代码如下:int max(int a, int b){ return a > b ? a : b;}为这么一个小的操作定义一个函数的好处有:转载 2017-10-25 13:45:04 · 1241 阅读 · 0 评论 -
C++中类与对象的讲解(通俗易懂)
http://blog.csdn.net/songkai320/article/details/51911917概念描述类成员函数类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。类访问修饰符类成员可以被定义为 public、private 或 protected。默认情转载 2017-10-25 13:43:53 · 446 阅读 · 0 评论 -
类中成员函数的实现,放在类块里和外部实现的区别
http://blog.csdn.net/wangfei8348/article/details/51385203class Weapon //兵器类{private: string _name; //兵器名 int _power; //威力值public: void show() { cout<< "名字:" << _name << ",威力转载 2017-10-25 13:42:21 · 5606 阅读 · 0 评论 -
视频无损高效压缩算法
losslessh264 是从 OpenH264 fork 出来的,无损压缩JPEG图像和H.264 视频的算法。它采用了更高效的编码算法,压缩率分别达到22%和13%(Deprecated) Lossless h.264 recoder/recompressor. For newest version see: — More...https://githu原创 2016-03-29 14:03:09 · 9186 阅读 · 0 评论 -
计算机术语 blob
BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。根据Eric Raymond的说法,处理BLOB的主要思想就是让文件原创 2015-11-18 18:38:38 · 1074 阅读 · 0 评论 -
const指针强转为非const指针后的赋值问题
#include using namespace std;int main(){ const int a = 5; const int * p = &a; int *p_var = NULL; p_var = const_cast int*>(p); //强转为非const指针 cout << a <<endl; *p_var转载 2015-03-05 14:18:24 · 7061 阅读 · 0 评论 -
enum和int的相互转换
例如:[cpp] view plaincopyenum Color { red, white, blue}; Color x; 我们应说x是Color类型的,而不应将x理解成enumeration类型,更不应将其理解成int类型。 我们再看enumeration类型:[cpp] view转载 2015-03-02 17:30:50 · 4045 阅读 · 0 评论 -
try throw catch 的实现原理
本人节选自《21天学通C++》一书 抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为:throw 表达式; 如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型与转载 2015-01-23 10:05:12 · 1725 阅读 · 0 评论 -
C++当中构造函数前面添加explicit关键字的作用
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”); 但是有转载 2015-01-30 16:31:15 · 1466 阅读 · 0 评论 -
STL基础知识
一、基础知识1、泛型技术泛型技术的实现方法有多种,比如模板,多态等。模板是编译时决定,多态是运行时决定,其他的比如RTTI也是运行时确定。多态是依靠虚表在运行时查表实现的。比如一个类拥有虚方法,那么这个类的实例的内存起始地址就是虚表地址,可以把内存起始地址强制转换成int*,取得虚表,然后(int*)*(int*)取得虚表里的第一个函数的内存地址,然后强制转换成函数类型,即可调用来验证虚表转载 2015-01-12 11:01:40 · 613 阅读 · 0 评论 -
C和C++中static成员的特点
C语言中static的变量:1).static局部变量 a、静态局部变量在函数内定义,生存期为整个程序运行期间,但作用域与自动变量相同,只能在定义该变量的函数内使用。退出该函数后, 尽管该变量还继续存在,但不能使用它。 b、对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。2).static全局变量转载 2015-01-30 16:38:07 · 711 阅读 · 0 评论 -
C++的异常处理
异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制。也许我们已经使用过异常,但是你会是一种习惯吗,不要老是想着当我打开一个文件的时候才用异常判断一下,我知道对你来说你喜欢用return value或者是print error message来做,你想过这样做会导致Memory Leak,系统退出,代码重复/难读,垃圾一堆…..吗?现在的软件已经是n*365*24小时的转载 2015-01-23 10:33:38 · 530 阅读 · 0 评论 -
C++中的异常类
C++有很多的标准异常类:namespace std{ //exception派生 class logic_error; //逻辑错误,在程序运行前可以检测出来 //logic_error派生 class domain_error; //违反了前置条件 class invalid_argument; //指出函数的一个无效参数转载 2015-01-09 12:03:07 · 501 阅读 · 0 评论 -
C/C++变量在内存中的分布
http://blog.csdn.net/morewindows/article/details/6851681C/C++变量在内存中的分布在笔试时经常考到,虽然简单,但也容易忘记,因此在这作个总结,以加深印象。先写一个测试程序:[cpp] view plain copy#include #include转载 2016-04-07 16:30:11 · 329 阅读 · 0 评论 -
C语言中内存分布及程序运行加载过程
http://toutiao.com/i6276431175556792833/一个程序内存分配:下图是APUE中的一个典型C内存空间分布图(虚拟内存)例如:#includeint g1=0, g2=0, g3=0;int max(int i){int m1=0,m2,m3=0,*p_max;static n1_m转载 2016-04-28 14:15:42 · 1924 阅读 · 0 评论 -
c++中冒号(:)和双冒号(::)的用法
http://fengqing888.blog.163.com/blog/static/3301141620100623933512/1.冒号(:)用法(1)表示机构内位域的定义(即该变量占几个bit空间)typedef struct _XXX{unsigned char a:4;unsigned char c;} ; XXX(2)构转载 2017-05-19 15:22:32 · 575 阅读 · 0 评论 -
//#ifdef __cplusplus extern "C" 含义
#ifdef __cplusplusextern "C" {#endif#import @interface ViewController :UIViewController@property (nonatomic,readonly) UIView *headView;@end//#ifdef __cplusplus ex原创 2017-05-24 21:17:44 · 469 阅读 · 0 评论