C++
缤纷冷泪
这个作者很懒,什么都没留下…
展开
-
浅谈C++ 类型转换以及其在友元方面的应用
在这里,我不讨论各种cast的使用范围和区别,也没有考虑汇编在类型转换间的应用。一、类型转换本质在C++中,所有数据都是“类”的实例,所有实例在计算机看来不过是内存中的一堆二进制码而已。1110100011100110110000101100011 代表什么?为了方便讨论,将其转换为十六进制码74 73 61 63那么“74 73 61 63”代表什么呢?是数字19537186原创 2013-02-05 20:56:13 · 722 阅读 · 0 评论 -
C++ 强制类实例使用堆分配或栈分配
原理很简单,就是重载操作符new ,delete,重载原创 2014-05-12 13:37:46 · 799 阅读 · 0 评论 -
C标准函数库
转自维基百科http://zh.wikipedia.org/wiki/C_%E6%A8%99%E6%BA%96%E5%87%BD%E5%BC%8F%E5%BA%AB转载 2014-05-13 11:17:21 · 542 阅读 · 0 评论 -
条件变量 pthread_cond_wait 函数的解锁和等待为原子操作
看网上的示例代码,总是看不懂,总是觉得哪里不对原创 2014-05-22 11:48:51 · 2749 阅读 · 2 评论 -
代码 Window获取本地所有IP地址
#include Local_Addr_Not_Changed() { //1初始化网络环境 //WSADATA wsaData; //int ret=WSAStartup(MAKEWORD(2,2),&wsaData); //if (ret!=0) //{ // return false; //} //2获取本机名称 cha原创 2014-06-16 14:17:11 · 947 阅读 · 0 评论 -
.net framework 4.5 使用c++编写窗体(WinForm)应用程序
如果是.net framework 2,还有x原创 2014-09-22 13:24:31 · 4707 阅读 · 1 评论 -
c++ 字符串格式 String Format 库 (替代printf)
Windows CString的formatque s原创 2014-09-15 17:32:59 · 2393 阅读 · 0 评论 -
Visual Studio 2013 调试MFC程序 ,断点无效
新建的MFC工程,原创 2014-09-15 11:58:50 · 4059 阅读 · 0 评论 -
C/C++ 使用宏在编译期计算可变参数个数
C/C++ 使用宏在编译期计算可变参数个数原创 2014-09-16 11:22:09 · 4138 阅读 · 0 评论 -
返回值重载,安全访问JSON反序列化生成的NSDictionary
由JSON反序列化生成的NSDictionary,我们在解析时需要按照固定格式将数据读取出来。如果由于某些原因,我们拿到的数据格式变化了,而我们并不知道,仍然按照之前的固定格式读取,那么很有可能发生崩溃。 例如, 对于JSON串NSString * jsonStr = @"{\"a\":[1,2,3]}";反序列化成NSDictionary后,这样解析数据NSDiction原创 2016-02-24 10:42:58 · 1002 阅读 · 0 评论 -
一个简单的Android程序,JNI实现Native C/C++
一、必备工具Java环境Eclipse+ADT Plugin Android NDK r8以上(之所以用r8以上,是因为在Windows上编译时,不需要cygwin之类的linux环境了,我用的是r9)搭环境的教程,网上很多,不赘述 二、过程1、创建一个Android应用程序工程打开Eclipse ,File -> New ->Project ->Android ->A...原创 2014-06-12 16:32:28 · 811 阅读 · 0 评论 -
类成员指针和类成员函数指针
整理自C++的的教科书。原创 2014-04-09 15:43:37 · 559 阅读 · 0 评论 -
C/C++ 利用位运算优化整数乘法
本文参考自《深入理解计算机系统》中文版转载 2014-04-07 18:31:03 · 3426 阅读 · 0 评论 -
STL 如何使用list::remove_if
void list::remove_if( MATCH )这个方法移除list中符合条件的元素。x为list中的某个元素,如果MATCH(x)为真,则从list中移除这个元素MATCH通常有两种形式1、函数2、类对象对于函数,如下例bool matchfun(int x){ return x>1;}int main(){ list ls原创 2013-05-03 17:15:38 · 1321 阅读 · 0 评论 -
STL 容器和ATL智能包裹类的冲突
源文:http://www.codesky.net/article/200504/63245.html 最近,在原有项目基础上做开发。项目主要使用Visual studio 2005 ,代码中存在大量 std::vector>这类代码,一直以来运行正常。我在开发时,出于空间和时间的综合考虑,有时会使用list,但是当写出std::list>,然后push_back时,编译器报出了错误转载 2013-05-22 10:54:48 · 1335 阅读 · 0 评论 -
C++编程技巧,利用继承实现对他类的友元
class意味着封装,而friend则是对封装的破坏,两者合理组合有很多意想不到的效果。例如,有class A,class B。如何不在A内使用friend,而使B访问A的成员(准确的说是受保护的成员)?如下代码:class A{protected: int number;};class B{ class SubA : public A //原创 2013-08-06 22:02:35 · 764 阅读 · 0 评论 -
C++,MD5算法的实现类,使用了模板技巧
#pragma once//作者:缤纷冷泪,邮箱gm958spanda@163.com#include namespace My{ struct Sign128 { Sign128(){} Sign128(unsigned long a,unsigned long b,unsigned long c ,unsigned long d) { this原创 2013-08-21 23:09:16 · 657 阅读 · 0 评论 -
C++,几个小巧开源xml库
我只是找个地方标记一下,省以后忘了 1、CMarkup这个只能算是半开源的。网上能下载到的CMarkup源代码,绝大多数是CMarkup 付费版的阉割版本。当然,免费版已经能满足基本的读需求,对于写需求则不能很好满足。我只评论免费版。CMarkup采用EDOM模型,容错性不错。可以读根节点多于一个的“非法xml文档”(xml文档根节点只有一个),例如下面的文档,CMarkup就原创 2013-08-17 17:00:39 · 3387 阅读 · 0 评论 -
C++返回值重载
源文:http://blog.chinaunix.net/uid-20476365-id-1942464.html C++当然是不能仅仅通过返回值重载函数的,但是,我们往往会想:要是支持返回值重载就好了。现在,我就从C++的某个颇受争议的角落,为您发掘一点东西。 假设有这样一个函数:type getvalue(const DBField& fd);转载 2013-09-17 22:06:20 · 1980 阅读 · 0 评论 -
C风格的字符串和std::string的比较
本文内容,同样适用于款字符串(wchar_t)C语言中,用以0结尾的char数组存储字符串,例如字符串 ”123”,C语言中表示为字节 0x31 0x32 0x33 0x00std:string则用指针 char*和长度值来存储字符串,例如字符串“123”,std::string 的char*指针指向0x31 0x32 0x33,长度值为3因为,std::str原创 2013-10-31 21:45:17 · 3255 阅读 · 0 评论 -
arm-linux-gcc char类型默认是unsigned char
哎,被坑了。起因是代码移植,完全一样的代码在ipnone上和在android上运行结果大不相同。 其中,有类似这样的代码static const char table[3] = {3,4-1};unsigned int index = 一系列运算的结果;int number = table[index];if( number == -1 ){ 其他运算原创 2013-12-04 13:32:51 · 2475 阅读 · 0 评论 -
C++ 枚举、布尔、位域的一些联想
枚举关键字是enum。枚举的实质是有限数量的int数字集合,使用枚举的好处就是“望文生义”而又不影响效率,类似常量宏但又在C++的强类型检查范围内。基本上教科书上都会有类似的示例:enum Number{ one = 1, two, three, five = 5};Number num = Number::three;//仅示原创 2014-02-19 11:42:51 · 1230 阅读 · 0 评论 -
打破陈规偏见,C/C++资源释放
陈规偏见,多源于已有的认知(或经验,或学识)和对权威的膜拜。谁负责释放资源?如下char * fun(const char* str){ size_t len = strlen(str); char* p = (char*) malloc( len+1 ); return p;}看到这样的代码,大部分有过C++加持的人或膜拜教科书的人(我承认我以前也是原创 2014-04-02 11:07:41 · 2016 阅读 · 0 评论 -
利用 __attribute__((cleanup)) 实现自动加解锁的宏定义
参考 https://blog.csdn.net/cpp_chen/article/details/7170367原理是__attribute__((cleanup))的指令特性,模拟RAII过程。定义#include <pthread.h>static pthread_mutex_t mutexCreate(){//创建并初始化递归锁 pthread_mu...原创 2018-11-07 16:37:48 · 1104 阅读 · 0 评论