c++
ylqhust
这个作者很懒,什么都没留下…
展开
-
C++中修改常量值的方法
1.无法对全局常量,静态常量重新赋值,会引发编译错误或者运行时错误2.对函数内的局部常量可以重新赋值,但是并不会改变值,只是不会报错,所以没什么卵用3.可以对类中的成员常量进行重新赋值,主要的方法就是通过获取原常量的底层常量指针,使用强制类型转换,将常量指针改变成非常量指针,然后通过非常量指针进行赋值。例子如下class AClass{private: const int x; i原创 2016-09-23 00:06:04 · 5524 阅读 · 0 评论 -
osx下信号量和锁无法使用的替代品
osx下进行同步的时候,无论是使用pthread_mutex_t还是sem_t 都无法满足要求,pthread_mutex_t根本就没用,sem_t 只能使用sem_open进行非匿名信号量初始化,但也无法解决同步问题,还是会造成错误,在stackoverflow上看到一个好方法,可以解决这个问题, 使用dispatch_semaphore_t。具体测试代码如下 /** main.c **/#原创 2016-11-07 15:08:55 · 911 阅读 · 0 评论 -
boost中的shared_ptr
看了一下boost中的shared_ptr的源码,简化出了如下的版本,帮助理解shared_ptr的工作原理class sp_counted_base{public:long use_count;public:sp_counted_base():use_count(1){}void add_ref_copy(){ ++use_count;//此处是原子操作,这里简化了}virtu原创 2016-11-13 16:13:08 · 428 阅读 · 0 评论 -
堆
#define LEFT(a) ((a)<<1)#define RIGHT(a) (((a)<<1)+1)#define PARENT(a) ((a)>>1)using std::string;template struct Heap{ unsigned int heap_size;//有效数据个数 unsigned int length;//最大容量 T *array;原创 2016-11-29 22:44:37 · 326 阅读 · 0 评论