
C++
文章平均质量分 79
wjs1033
这个作者很懒,什么都没留下…
展开
-
Linux平台上用C++实现多线程互斥锁
在上篇用C++实现了Win32平台上的多线程互斥锁( http://www.linuxidc.com/Linux/2011-12/49099.htm ),这次写个Linux平台上的,同样参考了开源项目C++ Sockets的代码,在此对这些给开源项目做出贡献的斗士们表示感谢!下边分别是互斥锁类和测试代码,已经在Fedora 13虚拟机上测试通过。Lock.h#ifndef _Loc转载 2014-03-13 23:07:42 · 783 阅读 · 0 评论 -
C++中头文件相互包含与前置声明
一、类嵌套的疑问C++头文件重复包含实在是一个令人头痛的问题,前一段时间在做一个简单的数据结构演示程序的时候,不只一次的遇到这种问题。假设我们有两个类A和B,分别定义在各自的有文件A.h和B.h中,但是在A中要用到B,B中也要用到A,但是这样的写法当然是错误的:class B;class A{ public: B b;};class B转载 2016-04-22 12:01:47 · 897 阅读 · 0 评论 -
C++中的继承和组合区别使用
C++的“继承”特性可以提高程序的可复用性。正因为“继承”太有用、太容易用,才要防止乱用“继承”。我们要给“继承”立一些使用规则: 一、如果类A 和类B 毫不相关,不可以为了使B 的功能更多些而让B 继承A 的功能。 不要觉得“不吃白不吃”,让一个好端端的健壮青年无缘无故地吃人参补身体。 二、如果类B 有必要使用A 的功能,则要分两种情况考虑:(1)若在逻辑上转载 2016-03-08 19:25:50 · 431 阅读 · 0 评论 -
C/C++刁钻问题各个击破 位运算及其应用实例(2)
摘要上一篇《C/C++刁钻问题各个击破之位运算及其应用实例(1) 》受到不少网友的关注,这对我鼓励极大,首先感谢这些网友,特别要感谢几位回复的热心网友。上一篇中我对位运算进行了简单介绍,并谈到了如何操作整数的位,比如将某位置0、置1、翻转、查询某位是否为1等,最后在这些基本的位操作上给出了3个位运算的应用实例。本篇是上一篇的续集,我将给出6个比较复杂一点的位操作,并对比较难以理解的转载 2015-09-17 11:12:44 · 528 阅读 · 0 评论 -
C/C++刁钻问题各个击破之细说sizeof
摘要:Sizeof的作用非常简单:求对象或者类型的大小。然而sizeof又非常复杂,它涉及到很多特殊情况,本篇把这些情况分门别类,总结出了sizeof的10个特性:(0)sizeof是运算符,不是函数;(1)sizeof不能求得void类型的长度;(2)sizeof能求得void类型的指针的长度;(3)sizeof能求得静态分配内存的数组的长度!(4转载 2015-09-17 11:00:18 · 541 阅读 · 0 评论 -
C/C++刁钻问题各个击破 位运算及其应用实例(1)
摘要位运算是C/C++中的基本运算之一,即便是这样,它对大多数程序员来说是一个比较陌生的运算——大多数程序员很少使用位运算。本篇先简要介绍基本的位运算操作符及其用法(何时使用),然后介绍位运算符的几个典型应用:(1) 三种不用临时变量交换两个整数的实例,并分析每个实例的优缺点(2) 进制转换,通过位运算实现将十进制数按二进制和十六进制输出,并得出一个通用转载 2015-09-17 11:11:45 · 556 阅读 · 0 评论 -
C++十六进制宏的用法
流行的用法:用二进制的每一位代表一种状态。001,010,100这样就表示三种状态。通过或|运算就可以组合各种状态。001 | 010 = 011001 | 010 | 100 = 111通过与&运算可以去除某种状态。111 & 001 = 110可以定义这样的宏组合成函数的参数#define P1 0x001L // 001#define P2 0x002L // 010#define P3转载 2014-06-20 19:34:14 · 1743 阅读 · 0 评论 -
在C++类中定义线程函数的方法
昨天用C++把我写的一个游戏功能进行了封装,其中涉及到一个小问题,就是我封装的C++类中必须定义2个线程函数,比如像下面这样: 1. class A 2. { 3. public: 4. A(); 5. ~A(); 6. 7. void XXX(void *p); //此函数为线程回调函数转载 2014-05-10 15:33:55 · 877 阅读 · 0 评论 -
C++11 FAQ中文版:std::function 和 std::bind
三2Year 2011陈 良乔C++11 FAQstd::function 和 std::bind标准库函数bind()和function()定义于头文件中(该头文件还包括许多其他函数对象),用于处理函数及函数参数。bind()接受一个函数(或者函数对象,或者任何你可以通过”(…)”符号调用的事物),生成一个其有某一个或多个函数参数被“绑定”或重新组织的函数对象。(译注:顾转载 2014-04-19 09:37:36 · 626 阅读 · 0 评论 -
C++ explicit关键字详解
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit转载 2016-05-20 09:27:33 · 471 阅读 · 0 评论