- 博客(19)
- 资源 (22)
- 收藏
- 关注
原创 浅层拷贝与深层拷贝
当类中有指针类型成员变量时要用深层拷贝(重新分配新的内存区),否则由于编译类自动产生的是浅动拷贝,=赋值时两个对象的成员变量会只向同一内存区,则当析构时此内存区会释入两次,导致内存泄漏或程序崩溃。如:class string {private: char *m_str; public: string(char *s) { m_str=s; } string(){
2010-03-22 11:34:00
610
原创 继承
1.段约束符 Public、Protected、Private2.描述约束符 Public、Private3.描述约束符是Public(子类公有继承父类),则子类可以访问父类的Public、Protected成员,并不改其段约束符类型4.描述约束符是Private(子类私用继承父类),则子类可以访问父类的Public、Protected成员,但改其段约束符类型为Private5.基
2010-03-19 09:44:00
361
原创 编写 strcpy 函数
char*strcpy(char*strDest,const char*strSrc){ assert((strDest!=NULL)&&(strSrc!=NULL));//不检查指针的有效性 char* strAddr=strDest; while (*strSrc!=/0) { *strDest++=*strSrc++; } *strDest=/0; return strAddr
2010-03-17 16:44:00
509
原创 cdecl、stdcall、fastcall是什么?哪种可以实现个数不定的入口参数,为什么?
三者都是函数调用的约定。cedel:c declare(c调用约定)的缩写,是c和c++程序的缺省调用方式,规则是,从又向左的顺序压参数入,由调用者把参数弹出栈,对于传入参数的内存栈是由调用者来维护的,正因为如此,只有这种调用方式可以实现个数不定的入口参数(可变参数)。stdcall:是pascal程序的缺省调用方式,规则是,按从右向左的顺序入栈,被调用的函数在返回前清理传送参数的内存栈。
2010-03-17 15:09:00
1707
5
原创 运算符重载(实现CString类)
private: char*m_pdate;public://构造函数CString::CString(){};//拷贝构造CString::CString(const CString& t_cstring){ if(m_pdate!=NULL) delete[]m_pdate; m_pdate=new char[st
2010-03-17 11:31:00
2581
原创 进程间通信的方式!线程同步的方式!
进程间通信的方式:1.消息传递的方式2.内存映射的方式线程同步的方式:1.利用事件对象实现同步(CEvent)2.利用互斥对象实现同步(CMutex)3.利用临界区实现同步(initializeCriticalSection)4.利用信号量实现同步(CreateSemaphore)
2010-03-16 23:53:00
558
原创 什么是多态性?
多态性分:重载(OVERLOAD,重载只是函数名相同,返回类型,参数不同,早期匹配) 虚函数(函数必须有完全相同的返回类型和参数表,晚期匹配 ) 虚函数:一般虚函数(基类有函数体有实现,子类可重写也可不重写) 纯虚函数(基类只有函数体没有实现 virtual fun()=0,子类必须实现此函数体,至少含有一个纯虚函数的类是抽象类)
2010-03-16 22:35:00
1187
转载 if( boy.有房() and boy.有车() )
#if 0result love(boy, girl){ if( boy.有房() and boy.有车() ) { boy.set(nothing); return girl.嫁给(boy); } if( girl.愿意等() ) { while(!(boy.赚钱 > 100,000 and girl.感情 > 8 ) )
2008-07-23 00:14:00
976
原创 指针使用前要分配地址空间
学了几年C语言,到现在才明白这一点,惭愧!int* p;int a;p=&a; //分配地址空间或#define LEN sizeof(int)void main(){ int* p; p=(int*)malloc(LEN); //分配地址空间 *p=1; printf("%d",*p);}如果是这样,就错了:int*p;*p=1; printf("%d",*p); //没有分配地
2007-03-30 15:07:00
1283
2
原创 字符与字符串(字符数组)的输入区别
char c;scanf("%c",&c);char str[5];scanf("%s",str) //因为字符数组名本身代表地址
2007-03-30 14:51:00
980
原创 冒泡排序与选择排序
//起泡法思路:将相邻两个数比较,将小的调到前头#includevoid main(){ int i,j,temp; int array[5]; for(i=0;i { scanf("%d",&array[i]); } for(i=0;i { for(j=0;j { if(array[j]>array[j+1]) //比较相邻的两个数,将小的放到前头 { temp=arra
2007-03-27 14:30:00
796
原创 const与指针(从右向左读)
const与指针(从右向左读)char*const cp; cp是一个const指针,指向char型. 指针本身cp值不能修改char const* pc; pc是一个指针,指向const char型 指针所指的对象*pc值不能修改const char* pc2; 同上, pc是一个指针,指向const char型同上eg:void f
2007-03-09 12:11:00
1270
原创 几种易错的运算符
几种易错的运算符/ (除法运算符,但舍去小数并”向0取整”,如5/3=1,-5/3=-1)% (求余运算符,%两侧均应为整形数据,如7%5的值为3, 6%3值是0), (逗号运算符) 表达式1,表达式2 求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。Eg: 3+5,6+8 的值是14 a=3*5,a*4 则
2007-03-09 12:10:00
645
原创 break与continue
break与continue1.区别:break结束整个循环过程,不再判断执行循环的条件是否成立; continue只结束本次循环,即跳出循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。2.break只能用于循环语句和switch语句,所以是结束循环语句或switch语句; continue只能用于循环语句。Eg:计算r=1到r=10时的圆的
2007-03-09 12:08:00
920
原创 内存的分配与释放
内存的分配与释放void *malloc(unsigned int size) new 类型[初值]1必须是指定需要开辟的内存空间大小 1不需指定开辟的内存空间大小 (size是字节数,需事先求出或由sizeof求出)2返回值是void
2007-03-07 22:14:00
815
原创 Static 一二三
1,static声明局部变量函数调用结束后不消失而保留原值,即其占用的存储单元不释放,下次调用此函数时,该变量已有值,就是上次函数调用结束时的值eg:int f(){ static c=3; c=c+1; return (c);}main(){ for(int I=0;i pr
2007-03-07 12:10:00
694
原创 The Womain Taxi Driver In Cairo二
Nagat,as she now explains to me,works as a taxi driver serveral days and nights a week.she has another job,working in an office,but detail of it remain vague.the little old car is not hers;it belong
2007-02-27 10:12:00
1402
原创 The Womain Taxi Driver In Cairo一
Her name is Nagat. I fist saw her outside Cairo airport terminia.A woman taxi driver-the only woman,for that matter,among a large crowd of her male couterparts Do you Know what is like to arr
2007-02-26 11:38:00
3280
eMule...........
2008-12-07
eMule源代码......
2008-12-07
PeerCast.org成立于2002年四月,它是一个非盈利性的站点,提供免费的P2P电台软件
2008-12-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人