随笔分类 -  C++

【转】字节对齐详解
摘要:一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址... 阅读全文
posted @ 2010-03-24 14:34 !-_-木糖-_-! 阅读(481) 评论(0) 推荐(0)
【转】sprintf函数用法
摘要:sprintf函数用法 原帖地址 : http://www.programfan.com/blog/article.asp?id=12763 在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。spr... 阅读全文
posted @ 2010-01-16 08:35 !-_-木糖-_-! 阅读(631) 评论(0) 推荐(0)
【转】C++中虚析构函数的作用
摘要:C++中虚析构函数的作用 收藏 我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-- 1 class ClxBa... 阅读全文
posted @ 2010-01-12 04:48 !-_-木糖-_-! 阅读(1215) 评论(0) 推荐(0)
【转】vc++编程经验总结
摘要:vc++如何实现远程调试 *假设调试机IP 192.168.0.182 远程机IP 192.168.0.161*远程机为调试机分配权限,使调试机可以使用远程桌面登陆到远程机器上(这样调试起来方便)。*调试机上安装visual studio .net 2003共享调试机上的Visual Studio上的远程调试目录(以我的机器为例)C:\Program Files\Microsoft Visual ... 阅读全文
posted @ 2010-01-01 16:28 !-_-木糖-_-! 阅读(543) 评论(0) 推荐(0)
vc++中的相对路径说明
摘要:在#include“”包含文件时,使用相对路径名跟安全。如,假定现有绝对路径如下A:/B/C/D/E.txtA:/B/C/D/F.txtA:/B/C/D/G.txtD:/B/C/D/E.txt其中A是驱动器,假定#include所在文件为:A:/B/C/D/E.txt那么在#include中包含字符串“/”等同于包含“A:/”... 阅读全文
posted @ 2009-12-31 18:28 !-_-木糖-_-! 阅读(3703) 评论(1) 推荐(0)
指针使用经验总结
摘要:不断更新:1.悬垂指针如果将作用域A的变量地址赋给在作用域B的变量指针。当A中相应变量的生存周期结束后,会使B的指针出现“悬垂指针”的现象(悬垂指针指向曾经存放对象的内存,但该对象已经不再存在了。悬垂指针往往导致程序错误,而且很难检测出来。)如下代码:代码 Code highlighting produced by Actipro CodeHighlighter (free... 阅读全文
posted @ 2009-12-10 05:19 !-_-木糖-_-! 阅读(501) 评论(0) 推荐(0)
【转】函数调用方式的区别[thiscall,__cdecl,__stdcall]
摘要:通常在使用VC进行函数定义时会指定该函数调用方式,诸如: int __stdcall max(int a, int b) { returna>b?a:b; } int __cdecl min(int a, int b) { returna<b?a:b; } bool __fastcall equal(int a, int b) { returna=b?true:false; } 首先... 阅读全文
posted @ 2009-12-09 23:06 !-_-木糖-_-! 阅读(1555) 评论(0) 推荐(0)
【转】C++ 类相互依赖
摘要:当类A作为类B的成员变量或输入参数时或函数体调用了A类的具体方法,也就是B必须知道A的布局时,在B的头文件中要包含A的头文件; 当类A仅作为B类的成员指针并且类A的方法并不需要调用A类的任何方法,也就是不透明指针,只需要在B类声明class A,不需要包含A的头文件。 尽量避免相互嵌套包含,特别是在大型软件中,使用设计模式打破循环嵌套。 阅读全文
posted @ 2009-12-06 00:58 !-_-木糖-_-! 阅读(1058) 评论(0) 推荐(0)
【转】static和extern的区别;当使用另外一个文件中的变量、类、方法时,什么时候改用extern声明,什么时候该include?
摘要:static和extern都被称为"global"变量(或者函数)。 但是他们的生存周期和可见性是不同。static是文件级, 只有程序文件之间显式的包含才可以引用(主要就是使用#include) 但是extern是程序级的,你不必显式的引用文件的,但需要使用extern 存储空间修饰符,这个任务编译器,链接器帮你完成了。 当使用另外一个文件中的变量、类、方法时,什么时候改用extern声明,什么... 阅读全文
posted @ 2009-12-05 21:44 !-_-木糖-_-! 阅读(1581) 评论(0) 推荐(0)
【转】头文件和源文件的关系
摘要:一、源文件如何根据#include来关联头文件 1,系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找。 #include <xxx.h> 2,用户自定义的文件用双引号括起来,编译器首先会在用户目录下查找,然后在到C++安装目录(比如VC中可以指定和修改库文件查找路径,Unix和Linux中可以通过环境变量来设定)中查找,最后在系统文件中查找。 #include R... 阅读全文
posted @ 2009-12-05 05:16 !-_-木糖-_-! 阅读(565) 评论(0) 推荐(0)
【转】C++标准编程:虚函数与内联
摘要:[这是发表在C++ Report杂志栏目最后一部分的文章。因为当这篇文章正准备发表在这本杂志上的时候,它停办了。Jose Lajoie和Stan Lippman特别允许我们将这篇文章发表在CUJ网站上。--mb]我们曾经在讨论C++的时候,经常会问到:“虚函数能被声明为内联吗?”现在,我们几乎听不到这个问题了。现在听到的是:“你不应该使print成为内联的。声明... 阅读全文
posted @ 2009-12-05 03:53 !-_-木糖-_-! 阅读(693) 评论(0) 推荐(0)
C++类成员和数据成员初始化总结
摘要:C++为类中提供类成员的初始化列表类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员2.进入构造函数后在构造函数中执行一般计算 1.类里面的任何成员变量在定义时是不能初始化的。 2.一般的数据成员可以在构造函数中初始化。 3.const数据成员必须在构造函数的初始化列表中初始化。 4.static要在类的定义外面初始化。 5.数组成员是不能在初始化列表里初始化的... 阅读全文
posted @ 2009-12-02 23:59 !-_-木糖-_-! 阅读(17594) 评论(0) 推荐(0)
【转】C/C++的变量存储问题
摘要:一.首先, 在c中分为这几个存储区 1.栈 - 由编译器自动分配释放 2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放 4.专门放字符串常量的地方。- 程序结束释放 5 程序代码区,存放2进制代码。 ... 阅读全文
posted @ 2009-12-02 19:03 !-_-木糖-_-! 阅读(998) 评论(0) 推荐(1)
【转】内存泄露 的解释
摘要:简介  在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏与许多其他问题有着相似的症状,并且通常情况下只能由那些可以获得程序源代码的程序员才可以分析出来。然而,有不少人习惯于把任何不需要的内存使用的增加描述为内存泄漏,即使严格意义上来说这... 阅读全文
posted @ 2009-12-02 18:31 !-_-木糖-_-! 阅读(500) 评论(0) 推荐(0)
C++ 中int,char,string,CString类型转换(一)
摘要:1. c++中string到int的转换1) 在C标准库里面,使用atoi:#include <cstdlib> #include <string>std::string text = "152"; int number = std::atoi( text.c_str() ); if (errno == ERANGE) //可能是std::errno { //number可... 阅读全文
posted @ 2009-11-30 03:05 !-_-木糖-_-! 阅读(105633) 评论(3) 推荐(5)
C++ 技术术语积累
摘要:不断更新:数据对齐,见:http://book.csdn.net/bookfiles/827/10082724877.shtml#_ftn10字节对齐,说明见:http://blog.csdn.net/zzffly9/archive/2007/10/26/1844421.aspxdynamic_cast可以用于类之间的交叉转换,说明如下:dynamic_cast还支持交叉转换(cross cast... 阅读全文
posted @ 2009-11-30 00:45 !-_-木糖-_-! 阅读(682) 评论(0) 推荐(0)
c++中的 const与指针
摘要:const与指针 有一下几种表示形态:double tr=5;double tb=4;1. const double * cptr=&tr;2. double const *cptr=&tr;3. double * const cptr=&tr;4. const double *const cptr=&tr;5. double const *const cptr=&... 阅读全文
posted @ 2009-11-24 21:52 !-_-木糖-_-! 阅读(338) 评论(0) 推荐(0)