李sir_Blog

博客园 首页 联系 订阅 管理

随笔分类 -  c/c++

1 2 下一页

摘要:note 更多用法,请参考: cppreference 用的少,容易忘。 我的理解 类似延迟计算。 比如,回调函数,将回调函数传入后,回调函数不一定马上被调用。 它是一个模板类,调用后将生成一个新的调用对象A。调用该对象A与调用原函数是等价的。 声明 截至目前,它的声明如下 需要包含头文件 复制#i 阅读全文
posted @ 2022-02-22 09:11 李sir 阅读(442) 评论(0) 推荐(0) 编辑

摘要:• 类模板声明 // MS C++ 2013 template<class _Fty> class function; template<class _Fty> class function : public _Get_function_impl<_Fty>::type { ... } // GCC 阅读全文
posted @ 2022-02-22 08:55 李sir 阅读(28) 评论(0) 推荐(0) 编辑

摘要:在面试中,经常被问的一个问题就是:你了解C++11哪些新特性?一般而言,回答以下四个方面就够了: “语法糖”:nullptr, auto自动类型推导,范围for循环,初始化列表, lambda表达式等 右值引用和移动语义 智能指针 C++11多线程编程:thread库及其相配套的同步原语mutex, 阅读全文
posted @ 2022-02-22 08:40 李sir 阅读(280) 评论(0) 推荐(0) 编辑

摘要:智能指针 请讲一下智能指针原理,并实现一个简单的智能指针 智能指针其实不是一个指针。它是一个用来帮助我们管理指针的类,维护其生命周期的类。有了它,妈妈再也不用担心我的内存泄露啦! 需要解决的问题: 怎么释放内存? 什么时候释放内存? 释放内存方法一:同归于尽! auto_ptr 释放内存方法二:引用 阅读全文
posted @ 2022-02-22 08:36 李sir 阅读(171) 评论(0) 推荐(0) 编辑

摘要:1. 多态是什么(语义上什么意思,语法上怎么实现)?虚函数是什么?虚函数底层怎么实现的? 多态简单来说就是“一个接口,多种方法”,程序在运行时才决定具体调用哪一个函数,因此程序运行有不同的状态,称为多态、语法上通过虚函数来实现。虚函数即声明时加了vitual关键字的函数,告知编译器不要在编译阶段将函 阅读全文
posted @ 2022-02-22 08:32 李sir 阅读(37) 评论(0) 推荐(0) 编辑

摘要:首先pThread 不是linux系统默认库,连接的时候需要使用库libpthread.a.加入-lpthread参数。另外会有lopen什么找不到的情况。加入-ldl指定目录。Project__targets options___C/C++ parser optionC/C++语言中调用 sqli... 阅读全文
posted @ 2014-04-25 11:20 李sir 阅读(5031) 评论(0) 推荐(0) 编辑

摘要:勾掉工程-> 设置-> C/C++ -> 产生浏览信息 阅读全文
posted @ 2011-12-27 19:40 李sir 阅读(573) 评论(0) 推荐(0) 编辑

摘要:我们知道,很多PE分析工具都可以查看一个EXE文件的引用DLL文件函数表,其实,这个本身就是存储在EXE头部的一个重要信息,今天,我们就来研究一下:我们借用一张PE结构图来分析:一个EXE完整的PE结构分五大部分。见上图.最开头的是部分是DOS部首,DOS部首由两部分组成:DOS的MZ文件标志和DOS stub(DOS存根程序)。之所以设置DOS部首是微软为了兼容原有的DOS系统下的程序而设立的。紧接着的是真正的PE文件头。值得注意的是PE文件头中的IMAGE_OPTIONAL_HEADER32是一个非常重要的结构,PE文件中的导入表、导出表、资源、重定位表等数据的位置和长度都保存在这个结构里 阅读全文
posted @ 2011-09-22 12:19 李sir 阅读(12520) 评论(0) 推荐(1) 编辑

摘要:话说,有这样一道据说是月薪2W的笔试题:#include "stdio.h"void print(){*}void main(){}要求在*部分写代码使整个程序运行后输出“hello world”,有些人说,这还不简单啊,于是写出这样的代码:view sourceprint?01.#include "stdio.h" 02.void print() 03.{ 04.printf("hello world"); 05.} 06.void main() 07.{ 08.print(); 09.}这样写的确是没问题,但是违背了题目的要求,因 阅读全文
posted @ 2011-09-22 11:34 李sir 阅读(2589) 评论(3) 推荐(1) 编辑

摘要:1、弹出式广告框也是IE浏览窗口,一般来说,它是一个无菜单、无工具栏窗口。所以可以在桌面上打开一个窗口时,首先判断该窗口类型是否是“IEFrame”,接着判断IEFrame的子窗口类型“WorkerW”的属性是否是不可见(这是一般弹出式广告窗口的特征),这样就可以向该窗口发出关闭的消息,以上步骤一般能自动关闭大部分弹出广告框。 2、通过WINDOWS编程中的钩子(HOOK)函数解决截获在桌面上打开窗口的消息。钩子函数的基本原理就是对WINDOWS系统的某些动作注册,当发生这些事件时首先调用预先设置的回调函数,回调函数处理后,再由原来的函数处理。这里回调函数的作用正是实现1中叙述的功能。因为.. 阅读全文
posted @ 2011-09-22 10:31 李sir 阅读(1320) 评论(1) 推荐(0) 编辑

摘要:为什么要MODEM来电显示? 因为MODEM,不管是内置MODEM,外置MODEM,只要它支持来电显示,接在电脑上,就可以装上相关来电显示软件,让打来的电话,在电脑上显示显示出电话号码。但MODEM必须支持来电显示是最关键也是最重要的要求。 实现来电显示的系统最小需求1.你的固定电话已经向电信运营商申请开通了来电显示功能,若没有申请,即使MODEM支持也是白搭。2.安装了MODEM的驱动软件。3.MODEM支持来电显示。(有些MODEM必须要驱动程序支持) 怎么判断MODEM是不是支持来电显示?1. 打开超级终端,随便输入一个连接名称,例如TEST。(也可以用其它终端软件,如Bitware)2 阅读全文
posted @ 2011-07-01 15:29 李sir 阅读(499) 评论(0) 推荐(0) 编辑

摘要:软件总存在这样或者那样的bug。虽然测试员已经在很努力的寻找问题,程序员也在汗流浃背的除虫,但是总会有一些情况被遗漏或者不可预测,比如用户的硬件环境、网络状况、操作系统差异等等,不一而足。而导致的结果则是弹出下面这样一个让用户摸不着头脑又恼火的提示,然后崩溃掉,令程序员尴尬不已。而在一些成熟的软件产品中,程序崩溃时我们看到的却是另外一番画面,比如QQ:又比如迅雷:你也想让你的程序拥有友好的崩溃界面,降低用户生气的能量,并且收集一些必要的信息进行调试,来完善你的程序吗?如果你是MFC程序猿,请继续围观,其他猿类请自行无视,并寻找适合你的猿粪。其实MFC框架已经为我们考虑到这个问题,只是默认生成的 阅读全文
posted @ 2011-03-28 17:16 李sir 阅读(3750) 评论(0) 推荐(0) 编辑

摘要:ACE是一个很成熟的中间件产品,为自适应通讯环境,但它过于宏大,一堆的设计模式,架构是一层又一层,对初学者来说,有点困难。ASIO是基本Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。最近分析ASIO的源代码,让我无不惊呀于它设计。在ACE中开发中的内存管理一直让人头痛,ASIO的出现,让我看到新的曙光,成为我新的好伙伴。简单地与ACE做个比较。1.层次架构:ACE底层是C风格的OS适配层,上一层基于C++的wrap类,再上一层是一些框架(Accpetor, Connector,Reactor等),最上一层是框架上服务。ASIO与之类似,底层是OS的适配层,上一 阅读全文
posted @ 2011-03-28 15:56 李sir 阅读(1072) 评论(0) 推荐(0) 编辑

摘要:类中的静态成员真是个让人爱恨交加的特性。我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 其定义方式与全局变量相同。举例如下: xxx.h文件 class 阅读全文
posted @ 2011-01-24 15:28 李sir 阅读(103317) 评论(3) 推荐(17) 编辑

摘要:2. 什么是“引用”?申明和使用“引用”要注意哪些问题? 答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。 3. 将“引用”作为函数参数有哪些特点? (1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数 阅读全文
posted @ 2011-01-18 17:20 李sir 阅读(4412) 评论(3) 推荐(5) 编辑

摘要:一.输出文件流成员函数1.输出流的open函数要使用一个输出文件流(ofstream),必须在构造函数或open函数中把该流与一个特定的磁盘文件关联起来。在各种情况下,描述文件的参量是相同的。当你打开一个与输出流关联.的文件时,通常指定一个open_mode标志,如下表所示。可以用按位OR(|)运算符组合这些标志,它们作为枚举器定义在ios类中。表输出文件流文件打开模式标志 功       能ios::app 打开一个输出文件用于在文件尾添加数据 ios::ate 打开一个现存文件(用于输入或输出)并查找到结尾ios::in 打开一个输入文件对于一个ofstream文件,使用ios::in作为 阅读全文
posted @ 2011-01-15 14:45 李sir 阅读(3948) 评论(0) 推荐(0) 编辑

摘要:今天,在review 一些代码的时候,看到了strtol()这个函数,由于以前使用它的时候,还没有深刻的了解,这次,我决定探个究竟。网上关于这个函数的资料大都来源于同份资料,linux库函数,讲的不够细致。于是,我花了几个小时,认真地尝试其功能,并整理了这篇文章,希望能对C语言的爱好者一些帮助。希望大家能够将本文中发现的错误及时反馈给我,以便修正。我的信箱是wp.qin@sunmedia.com。+----------------+| strtol |+----------------+i.e. string to longlong int strtol(const char *nptr, c 阅读全文
posted @ 2011-01-05 15:01 李sir 阅读(25125) 评论(0) 推荐(2) 编辑

摘要:1.函数功能 用来读写一个数据块。2.一般调用形式 fread(buffer,size,count,fp); fwrite(buffer,size,count,fp);3.说明 (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。 (2)size:要读写的字节数; (3)count:要进行读写多少个size字节的数据项; (4)fp:文件型指针。注意:1 完成次写操(fwrite())作后必须关闭流(fclose());2 完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE * fp)自动向后移 阅读全文
posted @ 2011-01-05 14:22 李sir 阅读(925) 评论(0) 推荐(0) 编辑

摘要:C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。 声明为explicit的构造函数不能在隐式转换中使用。 C++中, 一个参数的构造函数, 承担了两个角色。 1 是个构造器 2 是个默认且隐含的类型转换操作符。 所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型正好是AAA单参数构造器的参数类型, 这时候编译... 阅读全文
posted @ 2011-01-04 12:58 李sir 阅读(1528) 评论(1) 推荐(0) 编辑

摘要:关键词:static 本文是我对C++中关于static(静态类型)的一些理解总结,部分内容摘自《C++ Primer》,错误 不足在所难免,欢迎大家指正^-^ 主要内容: 一. 面向过程程序设计中的static 1. 全局静态变量 2. 局部静态变量 3. 静态函数(可不是静态成员函数哦)二. 面向对象程序设计中的static 1. 静态数据成员 2. 静态成员函数 一. 面向过程程序设计中的s... 阅读全文
posted @ 2010-11-22 16:38 李sir 阅读(647) 评论(0) 推荐(0) 编辑

1 2 下一页