kzone
百度空间 | 百度首页 
               
 
文章列表
 
2006-10-18 11:41

string::string(const char* str)
{
   if(str == NULL)
   {
      m_data = new char[1];
      *m_data = '\0';
    }
    else
    {
       int length = strlen(str);
       m_data = new char[str + 1];
       strcpy(m_data, str);
     }
}

string 的析构函数
string::~string()
{
   delete [] m_data;
}

string 的拷贝构造函数
string ::string(const string& other)
{
   int len = strlen(other.m_data);
   m_data = new char[len + 1];
   strcpy(m_data, other.m_data);
}

string 的赋值函数
string& string::operator=(const string& other)
{
  

 
2006-10-18 11:36


先说宏和函数的区别:
1. 宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型.
2. 宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值传递给形参,既然说是值,自然是计算得来的.
3. 宏在编译之前进行,即先用宏体替换宏名,然后再编译的,而函数显然是编译之后,在执行时,才调用的.因此,宏占用的是编译的时间,而函数占用的是执行时的时间.
4. 宏的参数是不占内存空间的,因为只是做字符串的替换,而函数调用时的参数传递则是具体变量之间的信息传递,形参作为函数的局部变量,显然是占用内存的.
5. 函数的调用是需要付出一定的时空开销的,因为系统在调用函数时,要保留现场,然后转入被调用函数去执行,调用完,再返回主调函数,此时再恢复现场,这些操作,显然在宏中是没有的.


  现在来看内联函数:
所 谓"内联函数"就是将很简单的函数"内嵌"到调用他的程序代码中,只样做的目的是为了避免上面说到的第5点,目的旨在节约下原本函数调用时的时空开销.但 必须注意的是:作为内联函数,函数体必

 
2006-10-18 11:22

摘要:内存管理向来是C/C++程序设计的一块雷区,大家都不怎么愿意去碰她,但是有时不得不碰它。虽然利用C++中的smart pointer已经可以完全避免使用指针,但是对于对于指针的进一步了解,有助于我们编写出更有效率的代码,也有助于我们读懂以前编写的程序。

    五大内存分区
    在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
    栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
    堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
    自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
    全局/静态存储区,全局变量和

 
2006-10-18 11:21

尔可夫链c语言版本 version1

/* just for fun */   #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>   enum
{
    NPREF = 2,       /* number of prefix words */
    NHASH = 4093,    /* sizeof state hash table array */
    MAXGEN = 10000,  /* maximum words generated */
    MULTIPLIER = 31  /* hash multiplier */
};
  char NONWORD[] = ""; /* the default prefix and end word */
 
typedef struct State State;
typedef struct Suffix Suffix;
  struct State{ /* prefix + suffix list */
    char *pref[NPREF]; /* prefix words */
 
2006-10-18 11:20
歌曲:寂寞的男人 歌手:张学友  
繁忙的工作加一把劲来过渡
无聊的交际只管把笑容制造
回家打开一副电脑
模拟找到模拟倾诉模拟很好
从来不知道怎么竟各行各路
从前的一套今天仔细仍照做
夜深粉紫色这外套
模拟起舞模拟拥抱模拟得到
仍然能拥有梦想跟前途
仍然能拥有自尊跟自豪
仍然明知许多女伴一转身会遇到
为何感到这不算最好
明明从不信天荒跟地老
明明从不会后悔得不到
明明从新掌握去做我总可以做到
为何今晚我不懂如何告别烦恼
浮华掌声里只想一个人赞慕
从难关出发心境可向谁透露
是否悲欢早有定数
何时得到何时失去谁能猜到
 
2006-10-18 11:19
libnet介绍与分析(下)

libnet源码的分析

     整体设计思想

       对每个要发送的包,libnet维护一个

 
2006-10-18 11:19
libnet介绍与分析(上)

当前,基于socket的网络编程已成为当今不可替代的编程方法,它将网络通讯当作文件描述符进行处理,把对这个“网络文件”(即socket套接字)的操作抽象成一种类似于文件操作的方式进行。从实现细节上,这种工作方式根据TCP/IP的网络通讯模型,封装了一系列的实现,使得我们只需要使用一个指定的参数,就可以实现在基于所需协议的数据的发送和接收。 

但是,如果我们对那些系统自动给我们做的工作感兴趣,希望与发送的数据作

 
2006-10-18 11:15

原来用的是MSN的博客,速度太慢了,决定搬家到这里来。。。
 
     
 
 
个人档案
 
kayaker

上次登录:
2006年10月
加为好友
 
   
 
最新照片
 
   
 
其它
 
已有人次访问本空间
 
订阅RSS  什么是RSS?

您也想拥有这样的空间?请点此申请。
     
 
最近访客
 
 

allen303allen

惊鸿寒烟

zdtracy

summerytyj

dulao5

zkheartboy

hswww

小重合
     


©2009 Baidu