C++
文章平均质量分 55
Happy_GP_
这个作者很懒,什么都没留下…
展开
-
空指针的成员函数调用
指针为NULL了,函数还能调用吗?于是写了一个简单的程序来做测试,代码如下:class A {public: int i; void f() { cout }};void main() { A * p= NULL; p->f();} 测试发现,程序能够正常运行。把p赋一个非空值如p=(A*)123; 同样如此。于是想搞明白原创 2009-08-20 15:20:00 · 434 阅读 · 0 评论 -
C++笔试面试题
今天去9City笔试才发现很多基本的东西都忘记了,以后面试前要看看这篇文章了!唉,老了!①链表反转单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的转载 2009-11-24 22:18:00 · 447 阅读 · 0 评论 -
编程实现栈
#include#includeusing namespace std;class CStack{public: CStack(int nSize); ~CStack(); void push(char a); void pop();private: char* m_pData; int m_nLength; // 栈长度 int m_nCount; // 当前元素个原创 2009-11-24 17:16:00 · 376 阅读 · 0 评论 -
__cdecl,__fastcall, __stdcall,__thiscall 区别
函数参数入栈的方式 --------------------------------------------------------------- 在函数调用过程中,会使用堆栈,这三个表示不同的堆栈调用方式和释放方式。 比如说__cdecl,它是标准的c方法的堆栈调用方式,就是在函数调用时的参数压入堆栈是与函数的声明顺序相反的,其它两个可以看MSDN,不过这个对我们编程没有太大的作用 ------转载 2010-03-05 11:34:00 · 543 阅读 · 0 评论 -
类中静态成员函数调用成员变量的发法(单件模式)
在类中定义一个自身类的对象指针,在构造函数中使对象指针指向当前对象,在静态成员函数中通过此对象指针指向一个成员函数,在此成员函数中调用成员变量。 class A{public: A();int Go();static void diaoyong();private: int x; static int y; static A* a;原创 2009-12-29 17:04:00 · 845 阅读 · 0 评论 -
UNICODE
简介 如果你编写的程序是针对非英语国家的用户,如中国、日本、东欧和中东地区,那么你一定要熟悉 UNICODE 字符集。尤其是用 Visual C++/MFC 编写针对上述国家和地区的用户的程序时,如果你想让自己的应用程序得到更广泛的用户,那么必须考虑代码 UNICODE 的兼容性,也就是说它既在 ASCII 模式下运行 ,也能在UNICODE 模式下运行。本文将介绍 UNICODE 的一转载 2010-04-17 20:12:00 · 322 阅读 · 0 评论 -
STL序列式容器中删除元素的方法和陷阱一
<br />在 STL (标准模板库)中经常会碰到要删除容器中部分元素的情况,本人在编程中就经常编写这方面的代码,在编码和测试过程中发现在 STL 中删除容器有很多陷阱,网上也有不少网友提到如何在 STL 中安全删除元素这些问题。本文将讨论编程过程中最经常使用的两个序列式容器 vector 、 list 中安全删除元素的方法和应该注意的问题, 其它如 queue 、 stack 等配接器容器( container adapter ),由于它们有专属的操作行为,没有迭代器( iterator )转载 2010-09-20 18:08:00 · 369 阅读 · 0 评论 -
拷贝构造函数
#include "stdafx.h"#include #include using namespace std;class CA{public: CA(); ~CA(); CA(const CA&); void Init(int a,char* chvar) { x = a; memcpy(ch,chvar,10*sizeof(char))原创 2009-09-02 18:08:00 · 399 阅读 · 0 评论 -
C语言中的移位操作
C语言中的移位操作,内容不多。不过有些地方你不注意,就疏忽了。 先做两个小题先。 (1)unsigned char x=3;x>1是多少?(2)char x=3;x>1是多少?(3)char x=-3;x>1是多少? 3写成二进制数是00000011;-3写成二进制数是(补码)11111101。(负数的二进制表示是原码反码加转载 2009-11-13 11:20:00 · 1193 阅读 · 0 评论 -
对字符数组(非字符串)使用strlen的注意
char arr1[]={a,b,c};char arr2[10]={a,b,c};coutcout strlen(arr1)的时候,它会越界搜索到arr2,因为arr1没有结束符,而arr1和arr2是连在一块的内存,如果是遍历到系统内存,程序就有可能挂,因为有些系统内存是不也许访问的char arr1[]={a,b,c};char xx = 0原创 2009-11-06 09:31:00 · 1042 阅读 · 0 评论 -
C++的四种类型转换
在c++中,提供了四种类型转换,static_cast、dynamic_cast、 reinterp_cast、const_cast。当然,如果你要用()强转也行,c++是兼容c的。 static_cast ( expression )常常用于下面几种情况:一、用于类层次结构中基类和子类之间指针或引用的转换。包括进行上行转换(把子类的指针或引用转换成基类表示)是安全的;进行下行转换(把基原创 2009-08-20 16:27:00 · 678 阅读 · 0 评论 -
静态成员函数
除静态数据成员外,C++也允许定义static成员函数。静态的数据成员被所有的对象共享,也就是说,静态数据成员不属于对象,而是属于类的。与静态数据成员类似,静态成员函数也是属于类的。 注意:静态成员函数仅能访问静态的数据成员,不能访问非静态的数据成员,也不能访问非静态的成员函数,这是由于静态的成员函数没有this指针。类似于静态的数据成员,公有的、静态的成员函数在类外的调用方式为: 类名:转载 2009-08-20 17:28:00 · 676 阅读 · 0 评论 -
前增量与后增量的区别
效率比较:前增量效率高,后增量要创建一个临时对象。 使用前增量时,对对象(操作数)进行增量修改,然后再返回该对象.所以前增量运算符操作时,参数与返回的是同一个对象.着与基本数据类型的前增量操作相似,返回的也是左值. 使用后增量时,必须在增量之前返回原有的对象值.为此,需要创建一个临时对象,存放原有的对象,以便对操作数(对象)进行增量修改时,保存最初的值.后增量操作返回的是原有对原创 2009-08-24 11:52:00 · 2774 阅读 · 0 评论 -
指针的赋值问题
第一种(正确):char* a;char* b="123131";a=b; 第二种:char* a=new char[10];char* b="134123";a=b;第二种写法就错了,因为a占据的内存没有释放,又给它赋一个新的地址,它就不知道怎么办了,删除不是,不删除也不是。 第二种写法改正:char* a=new char[10];char原创 2009-09-02 18:20:00 · 446 阅读 · 0 评论 -
Strcpy和Strncpy
strncpy char * strncpy(char *s1,char *s2,size_t n); 将字符串s2中最多n个字符复制到字符数组s1中,返回指向s1的指针。 注意:如果源串长度大于n,则strncpy不复制最后的/0结束符,所以是不安全的,复制完后需要手动添加字符串的结束符才行。 Strcpy和Strncpy的区别- - 第一种情况: c转载 2009-09-02 22:27:00 · 485 阅读 · 0 评论 -
strlen和sizeof
char name[14]="how are you ?";//此处若写成name[13]则会报错,说“name”: 数组界限溢出,还有个/0 int x; x=strlen(name);//若x=sizeof(name),则下面输出结果为14,数组的大小 cout char* name2 = "how are you ?"; int y; y = strlen(name2);//若写成y原创 2009-09-03 11:44:00 · 390 阅读 · 0 评论 -
HGE引擎里面的声音问题
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){m_hge = hgeCreate(HGE_VERSION);m_hge->System_SetStateInt(HGE_SAMPLERATE, 32000);m_hge->System_SetState(HGE_SHOWSPLASH, false);m_hge->System_SetStat原创 2009-09-03 15:40:00 · 517 阅读 · 0 评论 -
问题
堆栈的区别,堆栈内容的区别代码实现堆栈操作原创 2009-10-15 20:24:00 · 377 阅读 · 0 评论 -
函数的重载,隐藏,覆盖
重载:在同一个类里,函数名字和参数不同--->两个使编译后的函数名字不同。隐藏:子类函数名字隐藏基类里面的函数和基类函数的重载函数,如果要重载基类的函数,可以用public: using Base::func;覆盖:子类覆盖基类的虚函数,见虚函数表。原创 2012-05-14 00:08:07 · 312 阅读 · 0 评论