自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 基类指针和派生类指针

基类指针指向派生类对象派生类对象也“是”基类对象,但两者不同。派生类对象可以当做基类对象,这是因为派生类包含基类的所有成员。但是基类对象无法被当做成派生类对象,因为派生类可能具有只有派生类才有的成员。所以,将派生类指针指向基类对象的时候要进行显示的强制转换,否则会使基类对象中的派生类成员成为未定义的。总结:基类指针和派生类指针指向基类对象和派生类对象的4中方法:

2017-03-18 12:37:24 4729

原创 error LNK2001: 无法解析的外部符号 "public: static int __cdecl

2016-08-11 10:43:14 7191 1

原创 无法打开文件“libboost_log-vc100-mt-1_61.lib”

在Visual Studio 2010下编译出现如下错误:错误 36 error LNK1104: 无法打开文件“libboost_log-vc100-mt-1_61.lib”D:\Code\trunk\v3.0\NewWork\Common\LINK解决方法如下:1.首先运行D:\boost_1_54_0目录下的bootstrap.bat文件。此时

2016-08-10 15:58:17 5440 1

原创 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

【错误原因总结如下】:1. (此情况经常出现在大型工程项目中)如果存在两个类的头文件a.h和b.h,在a.h中有这样的语句:#include "b.h",在b.h文件中有这样的语句:#include "a.h"   且在一个类中有另一个类的对象时   那么就会出现这样的错误。2. 没有包含要定义的类的头文件。3.项目中少加了宏定义,导致头文件重复定义或相应宏无法识别。

2016-08-10 15:09:13 729

原创 boost.log4

本文首先介绍了boost.log的几个重要的概念,然后分析其框架结构,最后详细解析了一段示例代码,并总结了将boost.log应用到自己的程序中时的步骤。1. 几个概念日志记录:一个独立的消息包,这个消息包还不是实际写到日志里的消息,它只是一个候选的消息。属性:日志记录中的一个消息片。属性值:那就是上面所说的属性的值了,可以是各种数据类型。日志槽(LOG SINK):日志写向的目标

2016-08-09 18:11:04 512

原创 boost的log使用

以前使用log4cpp,boost增加了log库改用了boost的, 其实在用法上差不了太多log影响性能最基本的有2个地方 一个是console显示,一个是auto_flush不通过缓存直接写入 1 #include "stdafx.h" 2 #include "SLog.h" 3 4 #include 5 #include 6 #incl

2016-08-09 17:36:29 2870 2

原创 boost.log2

boost.log要点笔记 常用简写:namespace logging = boost::log;namespace src = boost::log::sources;namespace expr = boost::log::expressions;namespace sinks = boost::log::sinks;namespace attrs = b

2016-08-09 16:38:29 635

原创 Boost Log 1

Boost Log 基本用法flyfish 2014-11-5根据boost提供的代码示例,学习Boost Log 的基本用法前提boost版本boost_1_56_0示例代码文件夹 boost_1_56_0\libs\log\example\basic_usage使用的单词很形象,整个过程就像流水一样假设要输出的日志比作水  水

2016-08-09 16:24:24 433

原创 __VA_ARGS__

可变参数宏__VA_ARGS__ (2011-04-02 15:30:41)转载▼标签: 可变参数宏 参数表 函数式 调用 逗号 意思 杂谈 分类: oc基础可变参数宏__VA_ARGS__

2016-08-08 15:40:09 1029

原创 文件路径/和\的区别:

文件路径/和\的区别:在不同系统的情况系 windows下是\,linux和unix下是/ 但在win中没有本质区别。 但是由于 \ 也是转义字符的起始字符, 所以, 路径中的 \ 通常需要使用 \\如果是 / 就不需要使用转义了 如C中文件操作,c:\\kkk\\dd.txt c:/kkk/dd.txt一样\ 用于本地/ 用于网络连接地址最

2016-08-05 09:31:45 754

原创 关于函数指针的一个问题

今天遇到了一个问题,关于函数指针的问题:发现函数指针很多童鞋用的并不多,也不熟练,我自己也是;添加一个处理进度的函数,将该函数传给一个结构体当中的一个函数指针成员;首先在结构体当中添加该函数指针成员:填充结构体:注意,这里ors_rate_func是属于类CGetImeiDeptFiles的成员函数,这里涉及到一个问题:如何将一个类的成员函数传给一个结构体里的函数指针成

2016-08-03 18:17:28 292

原创 C++4种类型转换

C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。   const_cast,字面上理解就是去const属性。  static_cast,命名上理解是静态类型转换。如int转换成char。  dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。  reinterpreter_cast,仅仅重新解释类型,但没有进

2016-08-03 16:49:14 233

原创 ExitProcess,TerminateProcess,CreateToolhelp32Snapshot,Process32First,Process32Next,OpenProcess

进程只是提供了一段地址空间和内核对象,其运行时通过其他地址空间内的主线程来体现的。当主线程的进入点函数返回时,进程也就随之而技术。这种进程的种植方式是进程的正常退出。进程中的所有县城资源都能够得到正确的清除。除了这种进程的正常退出方式之外,优势还需要在程序中通过代码来强制结束本进程或其他进程的运行。ExitProcessvoid ExitProcess(UINT uExitCode

2016-08-03 15:12:12 1007

原创 Set和Map的内部结构

摘要:本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分析了map, set的优势之处。对于希望深入学习STL和希望了解STL map等关联容器底层数据结构的朋友来说,有一定的参考价值。STL map和set的使用虽不复杂,但也有一些不易理解的地方

2016-08-02 15:36:53 384

原创 C++中的类所占内存空间总结

类所占内存的大小是由成员变量(静态变量除外)决定的,成员函数(这是笼统的说,后面会细说)是不计算在内的。摘抄部分:成员函数还是以一般的函数一样的存在。a.fun()是通过fun(a.this)来调用的。所谓成员函数只是在名义上是类里的。其实成员函数的大小不在类的对象里面,同一个类的多个对象共享函数代码。而我们访问类的成员函数是通过类里面的一个指针实现,而这个指针指向的是一个tabl

2016-08-02 15:10:55 735

原创 UNICODE

UNICODE字符称为宽字符(特别是在C编程环境里),每一个Unicode字符是16位宽而不是8位,C语言用unsigned short表示,可以存放世界上所有书面语言的大多数字符和象形文字,还包括一批数学符号和装饰标志的集合。Unicode最棒的一个地方是它只有一个字符集,这就避免了二义性。char *szError = L"Error";字符串前面的大写字母L,用于告诉编辑器该字符

2016-08-01 18:33:51 293

原创 BOOST_FOREACH

成天写迭代器,写的手指都疼,BOOST_FOREACH可以方便的遍历STL容器.只需要头文件:#include 然后遍历容器vector/list/set/deque/stack/queue都是类似的:vectorint32_t> _v;BOOST_FOREACH(int32_t value,_v){//这里就可以访问value}同时元素

2016-08-01 17:18:59 585

原创 tuple 元组

tuple元组定义了一个有固定数目元素的容器,其中的每个元素类型都可以不相同,这与其他容器有着本质的区别.是对pair的泛化。首先来介绍元组的创建和元组元素的访问。通过make_tuple()创建元组,通过get#include #include #include  int main(){    auto t1 = std::make

2016-08-01 16:33:00 353

原创 hpp

HPP,计算机术语,用C/C++语言编写的头文件,通常用来定义数据类型,声明变量、函数、结构和类。hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再 将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减少调用 pro

2016-08-01 16:29:04 257

原创 __stdcall、__cdecl

__cdecl是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。_stdcall是StandardCall的缩写,是C++的标准调用方式:所有参数从右到左依次入栈

2016-08-01 16:15:22 348

原创 RegisterClassEx、CreateWindow、DefWindowProc

RegisterClassEx::该函数为随后在调用Createwindow函数和CreatewindowEx函数中使用的窗口注册一个窗口类。1 ,CCommon::CreateRegWnd(REG_WND_DOWNLOAD_CASE, CCommon::RegWndProc_Default);2,HWND CCommon::CreateRegWnd( const wstrin

2016-08-01 15:19:32 1145

原创 try catch

编译器能够保证代码的语法是正确的,但是对逻辑错误和运行时错误却无能为力,例如除数为 0、内存分配失败、数组越界等。这些错误如果放任不管,系统就会执行默认的操作,终止程序运行,也就是我们常说的程序崩溃(Crash)。优秀的程序员能够从故障中恢复,或者提示用户发生了什么;不负责任的程序员放任不管,让程序崩溃。C++提供了异常机制,让我们能够捕获逻辑错误和运行时错误,并作出进一步的处理。

2016-07-28 11:31:26 332

原创 _beginthreadex

本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别,在实际的编程中到底应该使用CreateThread还是_beginthreadex?    使用多线程其实是非常容易的,下面这个程序的主线程会创建了

2016-07-27 15:25:46 10014

原创 线程中CreateEvent和SetEvent及WaitForSingleObject的用法

关于事件  事件(Event)是WIN32提供的最灵活的线程间同步方式,事件可以处于激发状态(signaled or true)或未激发状态(unsignal or false)。根据状态变迁方式的不同,事件可分为两类:  (1)手动设置:这种对象只可能用程序手动设置,在需要该事件或者事件发生时,采用SetEvent及ResetEvent来进行设置。  (2)自动恢复:一旦事件发生并被

2016-07-27 14:12:33 1097 1

原创 do while(false)

使用do...break...while简化多级条件判断的结构。 如果你写过不少代码,那么一定会不时遇到类似下的情况:假设要找到文件A,复制该文件为B;然后打开B文件,然后往B文件内写入一些内容;最后在写入成功后,我们需要再进行一些相关操作。在此过程,遇到以下情况时将放弃后续的操作,认为是操作失败:1、如果A文件不存在;2、如果B文件已经存在,并且询问用户是否覆盖时,用户回

2016-07-26 10:06:39 404

原创 结合上面的五个例子,对类的静态成员变量和成员函数作个总结: 一。静态成员函数中不能调用非静态成员。 二。非静态成员函数中可以调用静态成员。因为静态成员属于类本身,在类的对象产生之前就已经存在了,所

结合上面的五个例子,对类的静态成员变量和成员函数作个总结:一。静态成员函数中不能调用非静态成员。二。非静态成员函数中可以调用静态成员。因为静态成员属于类本身,在类的对象产生之前就已经存在了,所以在非静态成员函数中是可以调用静态成员的。三。静态成员变量使用前必须先初始化(如int MyClass::m_nNumber = 0;),否则会在linker时出错。

2016-07-15 18:07:02 372

原创 视频解析 --libcef

原文地址: http://www.cnblogs.com/ngxianyu/archive/2013/12/08/3463775.html   作者:粘锅咸鱼很早之前看过关于豌豆荚的一片报道,说豌豆荚花了10个月的时间,使用c++重新实现。其界面完全采用html实现。本人之前都是使用mfc开发windows界面,为了达到要求的界面效果,我花了大量的时间在界面重绘和贴图上,所

2016-07-06 18:12:30 1790

原创 CURL入门

int CCommonData::CURLPostData( const string& url, const string& body, string* sRetStr ){curl_global_init(CURL_GLOBAL_ALL);CURL *curl = curl_easy_init();CURLcode code ;string strProxy

2016-07-05 11:03:59 409

原创 sendmessage和postmessage的区别

BOOL   PostMessage(         HWND   hWnd,             //   handle   of   destination   window         UINT   Msg,               //   message   to   post         WPARAM   wParam,     //   first  

2016-06-30 15:38:51 357

原创 mtu

mtu 通信术语 最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。原理说明因为协议数据单元的包头和包尾的长度是固定的,MTU越大,则一个协议数据单元的承载的有效数据就越长,通信效率也越高。M

2016-06-24 11:36:56 752 1

原创 arp协议

在网络中ARP协议是怎样实现数据包传输的:在命令行中输入 arp -a,会看见192.168.85.100 BB-BB-BB-BB-BB-BB dynamic这样的信息。这就是arp高速缓存中IP地址和MAC地址的一个映射关系,在以太网中,数据传递靠的是MAC,而并不是IP地址。其实在这背后就隐藏着arp的秘密。你一定会问,网络上这么多计算机,A是怎么找到B的?那么我们就来分析一下细节

2016-06-24 10:27:21 1890

原创 事务处理

事务处理是一种机制,用来管理必须成批执行的SQL操作,保证数据库不包含不完整的操作结果。利用事务处理,可以保证一组操作不会中途停止,它们要 么完全执行,要么完全不执行(除非明确指示)。如果没有错误发生,整组语句提交给(写到)数据库表;如果发生错误,则进行回退(撤销),将数据库恢复到某 个已知且安全的状态。提示:可以回退哪些语句?事务处理用来管理INSERT、UPDATE和D

2016-06-23 21:11:25 397

原创 shell

Shell 教程Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson的sh是第一种Unix Shell,Windows Explorer是一个典型的图形界面Shell。Shell

2016-06-23 21:02:06 226

原创 线程

一直对多线程编程这一块很陌生,决定花一点时间整理一下。os:ubuntu 10.04  c++1.最基础,进程同时创建5个线程,各自调用同一个函数[html] view plain copy#include iostream>  #include pthread.h> //多线程相关操作头文件,可移植众多平台    

2016-06-21 23:11:24 361

原创 二叉树

1,面试程序员被问到二叉树,以前并没有用到,不知道二叉树实际应用场景会有哪些。有没有达人举个典型的例子呢。用的最多的应该是平衡二叉树,有种特殊的平衡二叉树红黑树,查找、插入、删除的时间复杂度最坏为O(log n)Java集合中的TreeSet和TreeMap,C++ STL中的set、map,以及Linux虚拟内存的管理,都是通过红黑树去实现的。还有哈夫曼树编码方面的应用。

2016-06-21 22:51:29 377

原创 哈希表的C++实现

哈希表的几个概念:映像:由哈希函数得到的哈希表是一个映像。冲突:如果两个关键字的哈希函数值相等,这种现象称为冲突。处理冲突的几个方法:1、开放地址法:用开放地址处理冲突就是当冲突发生时,形成一个地址序列,沿着这个序列逐个深测,直到找到一个“空”的开放地址,将发生冲突的关键字值存放到该地址中去。例如:hash(i)=(hash(key)+d(i)) MOD m

2016-06-21 22:25:43 463

原创 哈希表

哈希的原理和代价什么是Hash Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压

2016-06-21 20:42:25 1099

原创 使用sizeof计算类的大小

使用sizeof计算类的大小class A{};class B{public:B(){}~B(){}};class C{public:C(){}virtual ~C(){}};int _tmain(int argc, _TCHAR* argv[]){printf("%d,%d,%d\n",sizeof(A),sizeo

2016-06-21 19:35:14 325

原创 面试题test

1、运行下列C++代码,输出什么?struct Point3D{      int x;      int y;      int z;};int _tmain(int argc, _TCHAR* argv[]){        Point3D* pPoint = NULL;        int offset = (int)(&(pPo

2016-06-21 19:23:13 418

原创 全局变量和局部变量在内存里的区别

一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static)—,

2016-06-21 19:00:34 3519

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除