C++语法
wangluozhangleilei
还好一路有你!
展开
-
explicit构造函数
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”); 但是有转载 2012-06-06 14:09:48 · 445 阅读 · 0 评论 -
typedef和typename关键字
1、类型说明typedef类型说明的格式为:typedef 类型 定义名;类型说明只定义了一个数据类型的新名字而不是定义一种新的数据类型。定义名表示这个类型的新名字。例如: 用下面语句定义整型数的新名字:typedef int SIGNED_INT;使用说明后, SIGNED_INT就成为int的同义词了, 此时可以用SIGNED_INT 定义整型转载 2012-07-25 16:46:10 · 897 阅读 · 0 评论 -
typedef struct与struct的区别
1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。转载 2012-08-13 15:38:19 · 524 阅读 · 0 评论 -
指针运算——算术运算、关系运算
是不是对指针的任何运算都是合法的呢?答案是它可以执行某些运算,但并非所有的运算都合法。除了加法运算之外,你还可以对指针执行一些其他运算,但并不是很多。 指针加上一个整数的结果是另一个指针。问题是,它指向哪里?如果你将一个字符指针加1,运算结果产生的指针指向内存中的下一个字符。float占据的内存空间不止1个字节,如果你将一个指向float的指针加1,将会发生什么?它会不会指向该flo转载 2012-08-14 14:29:51 · 685 阅读 · 0 评论 -
C++ 字符串操作经验集
C++ 字符串操作经验集 1. 字符类型和字符串char,wchar_t,CHAR,BYTE,UCHAR,WCHAR,TCHAR,TBYTEchar是C语言标准数据类型,字符型,至于由几个字节组成通常由编译器决定,一般一个字节。wchar_t是char的Unicode版本。相当于unsigned short。一般两个字节。CHAR 和WCHAR转载 2012-08-20 09:39:55 · 958 阅读 · 0 评论 -
C中如何调用C++函数、类内函数
在C中如何调用C++函数的问题,简单回答是将函数用extern "C"声明,当被问及如何将类内成员函数声明时,一时语塞,后来网上查了下,网上有一翻译C++之父的文章可以作为解答,遂拿来Mark一下。将C++函数声明为``extern "C"''(在你的C++代码里做这个声明),然后调用它(在你的C或者C++代码里调用)。例如:// C++ code:extern "转载 2012-09-14 20:00:02 · 9700 阅读 · 0 评论 -
char 与 unsigned char的本质区别
在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情转载 2012-10-06 18:57:31 · 681 阅读 · 0 评论 -
关于用new申请0个空间的问题
C++中虽然不允许定义长度为0的数组,但明确指出 动态分配长度为0的数组 是合法的,他返回的是一个合法的非0指针,这个指针与一般new返回的指针有所不同,他不能进行解引用操作(如果进行解引用操作,那么结果是undefined 的),因为他不指向任何对象,但可以进行比较操作。原创 2012-10-17 15:07:26 · 1748 阅读 · 0 评论 -
C++内存分配秘籍—new,malloc,GlobalAlloc详解
C++内存分配秘籍—new,malloc,GlobalAlloc详解 _______只为因内存分配而无法入眠的程序员一。关于内存 1、内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都转载 2012-10-18 14:38:53 · 733 阅读 · 0 评论 -
new(p) T1(value)
这叫place new,在指针p所指向的内存空间创建一个类型为T1的对象。调用的构造函数接受一个类型为const T2&(或其他兼容类型)的参数new placement 你可以简单的理解为C中的realloc,就是在已有空间的基础上,重新分配一个空间,可以不破坏原来数据,也可以把数据全部用新值覆盖 一下是我搜集的一些笔记 如果你想在预分配的内存上创建对象,用缺原创 2012-07-23 21:48:25 · 5692 阅读 · 0 评论 -
set_new_handler
在读Effecitve c++ 在set_new_handler方面疑问 比如我设置了 void a(){} set_new_handler(a); int *p=new int[100000000000]; 既然set_new_handler只是设置函数 它返回上次先前那new-handler 自然operator new不是调用它来调用new-h原创 2012-07-23 21:29:52 · 830 阅读 · 0 评论 -
C语言access函数
access()函数用来判断用户是否具有访问某个文件的权限(或判断某个文件是否存 在). access 总揽: #include int access(const char *pathname,int mode) 参数: pathname:表示要测试的文件的路转载 2012-08-04 21:15:43 · 664 阅读 · 0 评论 -
关于大型项目中位移操作的妙用
最近几天一直在看公司的代码,给别人“擦屁股”真的很不爽,特别是给大牛级的人物擦,更累啊!花了一个多小时的时间,才知道他是如何读取XML配置文件的。下面是我自己回来写的一份“伪代码”,大致就是这个样子,具体我也记不清啦,有兴趣的看看!#define TABLE_COUNT 50#define FMT_BINARY _T("2进制数")#define转载 2012-06-10 10:26:45 · 774 阅读 · 0 评论 -
delete与delete[]的区别和使用方法
由new分配的一个数组空间,比如说 int *array=new int[50],当用delete释放这个空间时,用语句delete []array和delete array是否等价! C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 关于 new[] 和 delete[],转载 2012-06-11 16:08:33 · 709 阅读 · 0 评论 -
Vs下 CCriticalSection::Lock 异常错误的发生
自己在vs下写了一个用 CCriticalSection::Lock来锁定对象的程序,发现给Lock设置dword参数时总会出现异常,后来查看了一下函数的文档,才恍然大悟!!!CCriticalSection 类包含成员函数锁定的线程可用于获得一个关键部分对象的所有权。有两个版本的锁定功能没有参数和其他采用 DWORD 参数之一。后一种版本的锁定文档状态 dword 值参数指定原创 2012-06-14 10:52:49 · 3006 阅读 · 1 评论 -
BYTE 和char的区别
其实BYTE就是 unsigned char,本质上BYTE和char两种类型都占一个字节。作为字符使用时,都是存储字符的ASCII码。比如:unsigned char uc='a';char c='a';printf("%d %d",uc,c);结果为: a a作为整数使用时,两种类型的取值范围就不同了。unsigned char 可取0至255,而char可取-128至+127。原创 2012-06-15 14:55:54 · 1140 阅读 · 0 评论 -
int_ptr, long_ptr這些類型的含义
The *_PTR types were added to the Windows API in order to support Win64's 64bit addressing.Because 32bit APIs are used to store pointers to things using data types like DWORDS, it was necessar转载 2012-06-15 15:45:07 · 1883 阅读 · 0 评论 -
函数对比
用_t替换字符'w',比如 wcsncpy to _tcsncpy(自适应函数)._tcsncpy_l 后缀 _l 不推荐使用的函数_tcsncpy_s 后缀 _s Security Enhancements in the CRT_tcsncpy_s_l 后缀 _s_l 同 _ssecurity enhancements宽字符处理函数函数与普转载 2012-06-18 15:37:45 · 1174 阅读 · 0 评论 -
给字符数组赋值的方法
main() { char s[30]; strcpy(s, "Good News!"); /*给数组赋字符串*/ . . . } 上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留 出连续30个字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy( strcpy 为 Turbo C2.0的函数)时, 首先在目标文件的转载 2012-06-30 15:03:41 · 965 阅读 · 0 评论 -
结构体中慎用指针
转载请注明出处作者:小马今天写一个基于TCP/IP的数据包发送程序时, 遇到一个问题, 我发送了一个数据包过去, 服务端可以接收到,但接收到的数据长度小于我实际传送的数据长度. 这个bug调了很久, 开始还认为是服务器端的程序问题, 最终发现是栽在了指针上面. 发送数据包的包格式形如下面的定义:[cpp] view plainco转载 2012-07-17 16:48:05 · 806 阅读 · 0 评论 -
float以16进制打印输出
void print_float_hex(float f){ union{float f; int i;}test; test.f=f; printf("%12.7e||||||||||%#010x/n",test.f,test.i);}转载 2013-04-28 17:01:32 · 3507 阅读 · 0 评论