C++
文章平均质量分 72
codinglf
专注于视频直播行业,在这个行业基类了丰富的经验,热爱开源项目。
我坚信业精于勤,只有偏执狂才能真正的成功。
喜爱的开源项目有:ffmpeg、opencv、crtmpserver、obs-studio、nginx、redis、skynet、kbengine、protobuf等等。。。
我的博客:http://blog.csdn.net/windows_nt
展开
-
Windows 常用API汇总
1.控件与消息函数 adjustwindowrect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 anypopup 判断屏幕上是否存在任何弹出式窗口 arrangeiconicwindows 排列一个父窗口的最小化子窗口 attachthreadinput 连接线程输入函数 begindeferwindowpos 启动构建一系列新窗口位置的过程 bringwin转载 2012-03-26 09:18:13 · 5833 阅读 · 0 评论 -
new以及错误处理
new以及错误处理/* 如果将“new 所得内存”delete掉却不幸失败,会导致内存泄露(memory leaks)。如果在“new 所得内存”身上多次delete则会导致不确定行为。 当operator new 抛出异常以反映一个未获满足的内存需求之前,它会先调用一个客户指定的错误处理函数,一个所谓的new_handler。为了指定这个“用以处理内存不足”的函数原创 2012-11-20 11:06:24 · 1625 阅读 · 0 评论 -
跟踪与调试
/* 许多C++程序员在跟踪代码时通常的做法是,定义一个简单的Trace类将诊断信息打印到日志文件中。程序员可以在每个想要跟踪的函数中定义一个Trace对象,在函数的入口和出口Trace类可以分别写一条信息。 缺点:增加程序开销,必须重新编译程序来打开或关闭跟踪。 我的博客:http://blog.csdn.net/windows_nt*/class原创 2012-11-23 08:56:59 · 1849 阅读 · 0 评论 -
copy构造隐藏的陷阱
copy构造当你看到赋值符号时要小心,因为"="语法也可用来调用copy构造函数。例如: Widget w3 = w2; //调用copy构造函数!!copy构造函数是一个尤其重要的函数,因为它定义一个对象如何passed by value(以值传递)。举个例子,考虑一下代码:bool hasAcceptableQuality(Widget w);...原创 2012-12-20 08:39:34 · 1139 阅读 · 2 评论 -
多重继承的二义性以及解决方法
//多重继承的二义性以及解决方法//学习目的:了解类的继承原理及多重继承二义性的解决方法。/*//本程序代码来源《MFC权威剖析》p68*/////////////////////第一种多重继承的二义性////////////////class Employee{public: char Name[40]; bool Sex;};class Work原创 2013-02-27 09:31:29 · 9574 阅读 · 0 评论 -
RTTI
首先举个运行时类型识别的例子:// RTTI.cpp - a demonstration of RTTI in C++#include //与RTTI相关#include #include class graphicImage{protected: char name[80];public: graphicImage() { str原创 2013-03-17 23:24:41 · 1435 阅读 · 0 评论 -
代码安全性的基本原则
代码安全性的基本原则基本点:1>指针 使用之前判定是否为空; 删除时注意是否应自己删除,且删除需置空;2>数组 使用下列操作时需做容器个数检查:front(),back(); 使用下列操作时需做数据越界检查: at(i),[i];3>无符号整型 常见的有UINT, size_t 在给无符号整型赋值时应多注意不能小于0;原创 2013-04-28 10:39:15 · 2794 阅读 · 0 评论 -
常被人忽略的一些语法问题
学习C++两个年头了,在学习的过程中经常碰到一些看似很简单,但却经常被人忽略的语法问题。在此我整理一下自己在学习过程中范的一些小错误,错误虽小,但却必须重视。第一个问题:#include #include using namespace std;void main(){ int i = 2, j; j = i++ + ++i; cout << j <<endl; //等于原创 2013-03-23 17:27:15 · 1804 阅读 · 6 评论 -
由.def文件生成lib文件
最近在学习curl库时,碰到一个问题,从官网上下载了一个lib版的,却发现只有.dll,没有lib文件,感觉很奇怪,google了之后才知道,原来库作者的用意是让用户自己生成lib文件,下载到的lib文件中含有.def文件。唉,自动化工具是变得越来越智能了,只是让我们变得越来越傻了。下边我总结了一下由.def生成lib的方法。在使用 VC 链接 dll 时,通常需要一个导入库文件(.lib原创 2013-08-01 21:42:05 · 9518 阅读 · 2 评论 -
google单元测试框架
从事开发也有两个年头了,但直到现在为止还没有真正给自己的代码做过单元测试。其实单元测试并不神秘,说简单点,就是为了便于测试你的代码而封装的一些模块。 最近从codeproject中看到一篇介绍google单元测试框架的文章,大感好奇,就试了试google的单元测试框架,感觉还真不错!!!就分享一下大家一起学习。google单元测试框架的源码地址:http://code.goo翻译 2013-12-19 18:40:45 · 1081 阅读 · 0 评论 -
C++类和接口的设计原则探讨
从整体功能层面谈class设计,有这么三条原则:单一功能原则(Single Responsibility Principle)一个class就其整体应该只提供单一的服务。如果一个class提供多样的服务,那么就应该把它拆分,反之,如果一个在概念上单一的功能却由几个class负责,这几个class应该合并。开放/封闭原则(Open/Close Principle)转载 2014-02-19 18:48:22 · 2211 阅读 · 0 评论 -
UML学习之类图事例
原创 2012-04-08 18:56:42 · 1107 阅读 · 0 评论 -
结构体字节对齐
结构体字节对齐转自:http://www.cnblogs.com/longlybits/articles/2385343.html 在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何 变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址转载 2013-05-21 21:27:05 · 1103 阅读 · 0 评论 -
public,protected,private访问
当private,public,protected单纯的作为一个类中的成员权限设置时:private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问. protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问 public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问注:友元函数包括转载 2012-11-30 16:44:04 · 834 阅读 · 0 评论 -
DEBUG和RELEASE版本差异及调试相关问题
DEBUG和RELEASE 版本差异及调试相关问题:I. 内存分配问题1. 变量未初始化。下面的程序在debug中运行的很好。thing * search(thing * something)BOOL found;for(int i = 0; i {if(whatever[i]->field == something->field){ /* found it */转载 2012-11-14 14:41:26 · 910 阅读 · 0 评论 -
头文件的使用规范
头文件的使用一般原则为:1、头文件中尽量少include,如果可以简单声明解决的,那最好不用include。2、实现文件中也要尽量少include,不要include没有用到的头文件。 可以用声明class clsOld来代替头文件的情况:简单的说:不需要知道知道clsOld的内存布局的用法都可以(静态成员除外),也就是讲如果是指针或引用方式的都行。 以下为特殊情况必须原创 2012-03-30 19:39:05 · 799 阅读 · 0 评论 -
typedef BOOL(WINAPI *MYFUNC) (HWND,COLORREF,BYTE,DWORD);语句的理解
首选先看一下typedef的四个用途和两个陷阱用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声原创 2012-04-28 16:05:19 · 5981 阅读 · 2 评论 -
VS快捷键
VS2005和VS2008快捷键大全VS2005快捷键 Ctrl+回车----上一行Ctrl+E,D ----格式化全部代码Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显示类视图窗口转载 2012-04-19 08:29:36 · 915 阅读 · 0 评论 -
用代码操纵剪切板
拷贝与粘贴文本 下边的源代码演示了如何将文本(包含在CString对象“source”中)拷贝到剪贴板上。 CString source; //put your text in source if(OpenClipboard()) { H转载 2012-06-15 18:49:11 · 794 阅读 · 0 评论 -
自己设计并使用断言
断言读者还要意识到,一旦程序员学会了使用断言,就常常会对宏assert进行重定义。例如,程序员可以把assert定义成当发生错误时不是中止调用程序的执行,而是在发生错误的位置转入调试程序。assert的某些版本甚至还可以允许用户选择让程序继续运行,就仿佛从来没有发生过错误一样。如果用户要定义自己的断言宏,为不影响标准assert的使用,最好使用其它的名字。本书将使用一个与标准不同的断言宏,原创 2012-09-04 23:48:16 · 1802 阅读 · 0 评论 -
派生类对基类的访问
派生类对基类的访问class Base { foo(int); protected: int bar; double foo_bar; }; class Derived : public Base{ foo(string); bool bar(Base *pb); void foobar(); protecte原创 2012-03-31 13:34:39 · 5321 阅读 · 0 评论 -
基类对象对派生类对象的切割问题
/* * *基类对象对派生类对象的切割问题* * 程序输出: By_Value_Display :Window.display By_Reference_Display :WindowWithScrollBars.display 知识点: *当一个derived class 对象以by value 方式传递并被视为一个base class 对象,base class 的拷贝原创 2012-10-26 10:11:25 · 1041 阅读 · 0 评论 -
继承与遮掩问题
继承与遮掩问题继承:pure virtual 函数的目的是为了让Derived class 只继承函数接口。impure virtual(虚) 函数的目的是让Derived class 继承该函数的接口和缺省实现。non-virtual(普通) 函数的目的是为了令Derived class 继承函数的接口及一份强制性实现。如果成员函数是个non-virtual函数,意味着它并不打算原创 2012-11-01 16:08:03 · 860 阅读 · 0 评论 -
private继承与复合
private继承与复合文章出自:blog.csdn.net/windows_ntprivate继承定义:private继承而来的所有成员,在derived中都会变成private属性。应用场合:当一个意欲成为derived class 者想访问一个意欲成为base class 者的protected成分,或为了重新定义一或多个virtual 函数时可以用private继承。知原创 2012-11-13 09:04:13 · 1417 阅读 · 3 评论 -
函数指针和多线程事例
/* 输出: printFunction1: 0 printFunction2: 我的博客:http://blog.csdn.net/windows_nt printFunction1: 1 printFunction2: 我的博客:http://blog.csdn.net/windows_nt printFunction1: 2 printFunction2: 我的博客原创 2012-11-15 20:01:03 · 1687 阅读 · 0 评论 -
多重继承与void*指针转换问题的分析
C++支持多重继承,然而多重继承可能会导致一些奇怪的问题,我前段时间遇到一个指针转换问题,非常典型。先看一个简单的测试代码:强制转换为void* 先static_cast再强制转换为void* 先dynamic_cast再强制转换为void*#include using namespace std;class IA{public: virtual ~IA()原创 2016-07-03 11:30:29 · 1067 阅读 · 0 评论