随笔分类 - C++
摘要:#include <iostream>using namespace std;class Child;class Father{public: void DelChild(Child *p);};class Child{public: void fun() { m_p->DelChild(this); char *ch=this->getName(); cout<<ch<<endl; }; char* getName(){return "111222";}; Child(Father *p) { ...
阅读全文
摘要:至从C语言开始enum类型就被作为用户自定义分类有限集合常量的方法被引入到了语言当中,而且一度成为C++中定义编译期常量的唯一方法(后来在类中引入了静态整型常量)。 根据上面对enum类型的描述,到底enum所定义出来的类型是一个什么样的类型呢?作为一个用户自定义的类型其所占用的内存空间是多少呢?使用enum类型是否真的能够起到有限集合常量的边界约束呢?大家可能都知道enum类型和int类型具有隐示(自动)转换的规则,那么是否真的在任何地方都可以使用enum类型的变量来代替int类型的变量呢?下面会逐一回答这些问题。 1. 到底enum所定义出来的类型是一个什么样的类型呢? 在C++中大家都知
阅读全文
摘要:#include <stdlib.h>#include <iostream>using namespace std;class CLS{public: int m_i; CLS( int i ) : m_i(i){} CLS() { CLS(0); }};int main(){ CLS obj; cout << obj.m_i << endl; system("PAUSE"); return 0;}打印结果是不定的,不一定为0代码奇怪的地方在于构造函数中调用了自己的另一个构造函数我们知道,当定义一个对象时,会按顺序做2件事情:
阅读全文
摘要:原作者:James BrownOriginal Author: James Brown原文链接:http://www.catch22.net/tuts/sysimg.aspOriginal Link:http://www.catch22.net/tuts/sysimg.asp点这里下载示例程序及其源码注意:本文的中文翻译工作已得到了原文作者 James Brown 的邮件授权,如果您需要转载,请联系 James 本人。 系统图像列表(有时亦被称作 Shell 图标缓存)是一个由 Windows Shell 维护的图标资源,资源管理器和其它应用程序使用这个列表来显示系统对象、程序和文件类型的图标
阅读全文
摘要:(178, 2, 'views', '2856'),(180, 128, 'views', '586'),(182, 136, 'views', '542'),(184, 139, 'views', '521'),(186, 146, 'views', '973'),(188, 158, 'views', '932'),(189, 162, 'views', '447'),
阅读全文
摘要:#include <stdexcept>template <typename T,int MAXSIZE>class Stack{private: T elems[MAXSIZE]; int numElems;public: Stack(); void push(T const&); void pop(); T top() const; bool empty() const{return numElems==0;} bool full() const {return numElems==MAXSIZE;}};//构造函数template <typ...
阅读全文
摘要:#include <iostream>using namespace std;//求两个int值的最大值inline int const& max(int const& a,int const& b){ return a<b ? b:a;}//求两个任意类型值中的最大者template <typename T>inline T const& max(T const& a,T const& b){ return a<b ? b:a;}int main(){ ::max(7.0,42.0);//调用max<d
阅读全文
摘要:#include <iostream>using namespace std;class Base{public: void fm(){cout<<"base::fm()\n";} void fm(int){cout<<"base::fm(int)\n";}};class D:public Base{public: //using Base::fm; void fm(){cout<<"D::fm()\n";}};int main(){ D d; d.fm(); d.fm(1);//err
阅读全文
摘要:#include <iostream>using namespace std;void print(){ cout<<"in the print function"<<endl;}int main(){ //使用typedef方法 typedef void (*func)(); func fun=print; fun(); //直接定义 void (*f)()=print; f(); return 0;}一般typedef使用的比较常见,在导出dll方法的时候使用的较多
阅读全文
摘要:#include <iostream>using namespace std;class B{ public: virtual void fun(int nNoUse=0) const=0;};class D1:public B{ public: virtual void fun(int nNoUse=1) const{cout<<nNoUse<<endl;}};class D2:public B{ public: virtual void fun(int nNoUse) const{cout<<nNoUse<<endl;}};int
阅读全文
摘要:公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1. 公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。2. 私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。3. 保护继承(protected)保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。下面列出三种不同的继
阅读全文
摘要:1、函数指针的声明格式: 函数返回值类型(*指针变量名)(参数类型列表) 或者是: typedef 函数返回值类型 (*指针变量名)(参数类型列表)2.使用typedef你可以使用typedef来隐藏一些指向成员函数的复杂指针。例如,下面的代码定义了一个类A中的成员函数的指针PMA,并传递char *和const char *参数。typedef void(A::*PMA)(char *, const char *); PMA pmf= &A::strcat; // use a typedef to define a pointer to member 使用type...
阅读全文
摘要:①链表反转单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:struct linka { int data; linka* next;};void reverse(linka*& head) { if(head ==NULL) return; linka *pre,
阅读全文
摘要:#include <iostream>#include <string>#include <cstdlib>using namespace std;int main(){ float a = 1.0f; cout << (int)a << endl; cout << (int&)a << endl; cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么? float b = 0.0f; cout
阅读全文
摘要:在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, argument] ... );除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使
阅读全文
摘要:1、初始化Load 导入一个XML文件到CMarkup的对象中,并对它进行解析。类似C#的Load。SetDoc 从字符串中导入XML数据,并对它解析。类似C#的LoadXml。2、输出Save 将XML数据写入文件中。类似C#的Save。GetDoc 将整个XML数据文档作为字符串返回。3、改变当前位置FindElem 定位到下一个元素,可能和一个标签名或路径匹配。FindChildElem 定位到下一个子元素,匹配元素名或路径。FindPrevElem 定位前一个元素,可能和一个标签名或路径匹配。FindPrevChildElem 定位前一个子元素,可能匹配标签名。FindNode 定位下
阅读全文
摘要:在编译VC++6.0是,出现fatal error C1010: unexpected end of file while looking for precompiled header directive的错误.解决方法:1、如果发生错误的文件是由其他的C代码文件添加进入当前工程而引起的,则Alt+F7进入当前工程的 Settings,选择C/C++选项卡,从Category组合框中选中Precompiled Headers,选择Not Using Precompiled headers。确定。2、在文件开头添加:#include "stdafx.h" 对预编译头文件说明如
阅读全文
摘要:经过今天尝试C++解析XML串,也算有了不少收获,总结一下。我是使用的CMarkup类对XML进行操作。CMarkup好象都是先从一个xml文件里面把内容读出来,再进行解析,搞得我恨不得要把我的string写到xml文件里面再取出来了。如果需要直接读取string,可以直接用 CMarkup::SetDoc方法。最后其他的方法转载别人的使用例子,写得很全。(一)先讲一下XML中的物殊字符,手动填写时注意一下。字符 字符实体& &或&' '或'> ...
阅读全文
摘要:以下代码主要来源于CodeProject上一个用渐变色填充DC的static控件中的一部分代码。//这是要使用的函数原型:typedef UINT (CALLBACK* LPGNDLLFUNC)(HDC,CONST PTRIVERTEX,DWORD,CONST PVOID,DWORD,DWORD);HINSTANCEhinst_msimg32 = NULL;static LPGNDLLFUNCpdllfunc_GradientFill;//初始化:hinst_msimg32 = LoadLibrary( "msimg32.dll" );if( hinst_msimg32 )
阅读全文
摘要:structtagTime{intyear;intmonth;intday;};voidSet(inty,intm,intd,structtagTime*t)/*设置日期*/{t->year=y;t->month=m;t->day=d;}intIsLeapYear(intyear)/*是否闰年*/{return((year%4==0)&&(year%100!=0)||year%400==0);}intGetLastDay(structtagTimedate)/*得到date.month的最大天数*/{intnum;switch(date.month){case
阅读全文

浙公网安备 33010602011771号