C++
wclin88
这个作者很懒,什么都没留下…
展开
-
对参数使用某种表示输入,修改,输出的命名规则
<br />在<代码大全>中的 7.5如何使用子程序参数 一节中建议到,给函数的参数名字加上i_, m_, o_前缀.<br />最近在看代码看到有些函数都要到里面去看传进入的参数是做什么用的,如果加上这个命名规则,那么<br />有时看代码就清晰多了.比如看到m_你就知道这个传进入的指针,或是引用会在这个函数里修改或是补<br />充内容.原创 2010-11-30 23:56:00 · 440 阅读 · 0 评论 -
linux 函数局部变量的堆栈使用
从这个例子的输出,可以看到从高地址开始分配,所以a1的地址是比a2大;这里要注意的时,单从一个数组来分析的话,比如aa,那么地址是从低位开始的,也就是如果我们对aa的操作越界了的话,那么可能会把a1和a2的值给覆盖掉,是从低往高处踩内存的。void print(int b1,int b2){ int a1=0,a2=1; printf("a1原创 2011-10-06 17:27:20 · 864 阅读 · 0 评论 -
什么是句柄?为什么会有句柄?HANDLE
从广义上,能够从一个数值拎起一大堆数据的东西都可以叫做句柄。句柄的英文是"Handle",本义就是"柄",只是在计算机科学中,被特别地翻译成"句柄",其实还是个"柄"。从一个小东西拎起一大堆东西,这难道不像是个"柄"吗?然后,指针其实也是一种"句柄",只是由于指针同时拥有更特殊的含义——实实在在地对应内存里地一个地址——所以,通常不把指针说成是"句柄"。但指针也有着能从一个32位的值引用到转载 2012-01-29 22:36:23 · 448 阅读 · 0 评论 -
谈谈头文件
头文件为所有extern对象声明,函数声明以及inline函数(模板)定义提供了一个集中的位置。1)头文件提供了两个保证:第一,保证所有文件都包含同一个 “全局对象” 或函数的同一份申明。(同一个对象只能有一个定义,但是可以有多个声明,如果在每个需要用到对象的地方都手动加上声明,有可能出现有点地方声明出错)第二,如果需要修改声明,则只需改变一个头文件。2)头文件提供的声明逻辑上应该属于一个原创 2011-10-30 14:58:54 · 467 阅读 · 0 评论 -
内存和对象内存池技术在网游开发中的注意点和应用
大家都知道,游戏服务器在网络游戏开发中所占的比重。而评论游戏服务器的好坏标准,除了实现游戏的逻辑功能外,最重要的也就是稳定和高效。一个不稳定的服务器对于一款网络游戏的打击是沉重,一个不高效的服务器对于玩家的感觉也是非常明显的。在这一章节中,我将要向大家介绍游戏服务器高效开发的一个方面,如何正确高效的使用内存?而关于其他高效开发的技术或者架构设计,我也将陆续向大家介绍。其中有欠妥之处,也希望读者转载 2011-09-17 00:20:06 · 1252 阅读 · 0 评论 -
C++中的INL
转至:http://www.cnblogs.com/tekkaman/archive/2011/04/20/2022031.htmlinl 文件是内联函数的源文件。内联函数通常在c++头文件中实现,但有的时候内联函数较多或者出于一些别的考虑(使头文件看起来更简洁等),往往会将这部分具体定义的代码添加到INL文件中,然后在该头文件的末尾将其用#include引入。由此也可以看到inl文件转载 2011-12-12 14:22:46 · 627 阅读 · 0 评论 -
用到extern "C"的两种情况
用到extern "C"的两种情况1) C++中调用C编写的函数时,需要先声明该函数,这是需要用到extern "C";如extern "C" size_t strlen(const char *);2) 导出C++函数到其他语言,使得用其他语言编写的程序可以使用C++函数; extern "C" double calc() {.....}原创 2011-10-29 10:06:11 · 399 阅读 · 0 评论 -
预处理器指示符
1)条件指示符#ifndef xxx #define xxx #endif 用于防止头文件的重复包含。2)#ifdef 常用于判断一个预处理器常量是否已经被定义,以便有条件的包含程序代码: #ifdef NDEBUG g_pPl原创 2011-10-20 08:15:08 · 442 阅读 · 0 评论 -
堆栈的学习
堆栈的学习收藏堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程转载 2011-04-10 22:40:00 · 696 阅读 · 0 评论 -
不定参数的使用
va_start va_end 的使用和原理1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表void foo(...);void foo(parm_list,...);2:函数参数的传递原理函数参数是以数据结构:栈的形式存取,从右至左入栈.eg:先介绍一下可变参数表的调用形式以及原理:首先是参数的内存存放格式:参数存放在内存的堆栈段中,在执行函数的时候,从最后一个开始入栈。因此栈底高地址,栈顶低地址,举个例子如下:void func(int x, float y, char z);那么,转载 2011-04-29 09:08:00 · 455 阅读 · 0 评论 -
vs2005 快捷键
(几个比较少用,但个人觉得还是挺有用的)F12 转到定义CTRL + F12转到声明CTRL + F4关闭文档窗口CTRL + TAB下一个文档窗口CTRL + K, CTRL + C注释选择的代码CTRL + K, CTRL + U取消对选择代码的注释Ctrl + K,Ctrl + F 根据周围的代码行,正确缩进选定的代码行。F9: 切换断点原创 2011-03-06 11:17:00 · 372 阅读 · 0 评论 -
Linux and Windows snprintf区别(zz)
今天使用snprintf函数时想到了: strcpy, strncpy strcmp, strncmp strcat, strncat sprintf, snprintf最喜欢用的就是snprintf, 因为它会自动在后面加'/0'. 在网上看了一下. 原来VC中_snprintf不是这样的.VC中的_snprintf函数并没有按照这样的规定来做,它在输出缓冲区不够大时就不会输出结尾的'/0'(跟strncpy的行为类似)。所以要让上面的程序工作正常,必须做相应的修改。 char转载 2011-02-28 21:00:00 · 450 阅读 · 0 评论 -
读取Ini例子
<br />目前只是实现了简单的读取整型和字符串,如果串是由“”扩住的,会连“”也返回。有空再改为不连“”一起返回。<br /> <br />#pragma once#include <map>using namespace std;class ReadIni{public: ReadIni(void); ReadIni(char *); int ReadInt(const char*,const char*); char* ReadString(const ch原创 2010-11-21 00:13:00 · 366 阅读 · 0 评论 -
Ini文件的读取
<br />1)神马是Ini文件呢?<br />[connect default]<br />;If we want to disable unknown connect values, we set Access to NoAccess<br />Access=NoAccess<br /><br />[sql default]<br />;If we want to disable unknown sql values, we set Sql to an invalid query.<br原创 2010-11-20 12:52:00 · 526 阅读 · 0 评论 -
函数收集
<br />1)原型是char *fgets(char *s, int n, FILE *stream); <br /> 从流中读取n-1(最后一个是0)个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。<br /> 如果一行的字符数小于n-1,则读取了一行(包括行尾的'/n',并自动加上字符串结束符'/0')。原创 2010-11-20 11:50:00 · 528 阅读 · 0 评论 -
虚成员函数的实现(多态)
<br /><br />虚成员函数是动态确定的(在运行时)。也就是说,成员函数(在运行时)被动态地选择,该选择基于对象的类型,而不是指向该对象的指针/引用的类型。这被称作“动态绑定”。大多数的编译器使用以下的一些的技术:如果对象有一个或多个虚函数,编译器将一个<br />隐藏的指针放入对象,该指针称为“virtual-pointor”或“v-pointer”。这个v-pointer指向一个全局表,该表称为“虚函数表(virtural-table)”或“v-table”。<br /><br />编译器为每个含原创 2010-11-10 14:47:00 · 1061 阅读 · 1 评论 -
一个简单类的内存分配
#include#include#includeclass addr{ public: addr() { b = (int*)malloc(sizeof(int)*100); } ~addr() { de原创 2012-02-23 16:44:52 · 540 阅读 · 0 评论