<?xml version="1.0" encoding="utf-8"?><rss version="2.0">
<channel>
<title><![CDATA[大笨猪]]></title>
<link>http://blog.pfan.cn/bigpig</link>
<description>编程爱好者博客</description>
<language>zh-cn</language>
			<item>
		<title><![CDATA[将一个偶数分解成质数和]]></title>
		<link>http://blog.pfan.cn/bigpig/52920.html</link>
		<description><![CDATA[#include&lt;iostream.h&gt;
#include&lt;math.h&gt;
#include &lt;windows.h&gt;
//判断是否是素数
int IsSushu(int num)
{
	int i;
	int temp;
	temp = sqrt(num);
	for (i=2;i&lt;=temp;i++)
	{
		if(num%i==0)
		{
			return 0;
		}
	}
	if(i&gt;temp)
		return 1;
}
//主函数开始，正常返回1，异常返回0
int main()
{
&nbsp;&nbsp; &nbsp;int num;
	cout&lt;&lt;"input a num: "&lt;&lt;endl;
	cin&gt;&gt;num;
	//num=100;
	if(num&lt;3||num%2!=0)
	{
		cout&lt;&lt;"数字非法,10秒后关闭程序"&lt;&lt;endl;
		_sleep(10000);
		return 0;
	}
	int i,temp;
	temp = num/2;
	cout&lt;&lt;" 程序运行结果如下所示:"&lt;&lt;endl;
	for (i=2;i&lt;=temp;i++)
	{
		if(!IsSushu(i))
			continue;
		else
		{
			if(!IsSushu(num-i))
				continue;
			else
			{
				cout&lt;&lt;num&lt;&lt;"="&lt;&lt;i&lt;&lt;"+"&lt;&lt;num-i&lt;&lt;endl;
			}
		}
	}
		cout&lt;&lt;"程序运行结束,10秒后关闭程序"&lt;&lt;endl;
	 &nbsp; _sleep(10000);
	 &nbsp; &nbsp;return 1;
}

程序不解释，大家自己看哇]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2011-11-13 18:34:00</pubDate>
		</item>
				<item>
		<title><![CDATA[考研辅导]]></title>
		<link>http://blog.pfan.cn/bigpig/51520.html</link>
		<description><![CDATA[大家好，为方便大家顺利考取南京师范大学2011级教育技术学研究生，本人组织了一批在读的本专业研究生向大家提供专业课的讲解服务，教学方式有两种，如下所示：
1、网络在线辅导，通过QQ视频的形式进行教授。
2、集中面对面授课。时间为10月1日-10月5日
具体收费如下：
网络班：每门专业课260元，包教会。可随时进行咨询辅导。
面授班：每门专业课350元，免费帮助同学安排住处（住宿费自付）。
有意向的同学请加QQ号：1339949562，注明：考研]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2010-07-21 14:24:00</pubDate>
		</item>
				<item>
		<title><![CDATA[MFC中模拟进程间的通信]]></title>
		<link>http://blog.pfan.cn/bigpig/50874.html</link>
		<description><![CDATA[void CClipDlg::OnButton1() {&nbsp;// TODO: Add your control notification handler code here
&nbsp;if(OpenClipboard())&nbsp;{&nbsp;&nbsp;CString mystr;&nbsp;&nbsp;&nbsp;&nbsp; HGLOBAL hClip;&nbsp;&nbsp;&nbsp;&nbsp; char *pstr;&nbsp;//&nbsp;OpenClipboard();&nbsp;&nbsp;EmptyClipboard();&nbsp;&nbsp;&nbsp;&nbsp; GetDlgItemText(IDC_EDIT1,mystr);&nbsp;&nbsp;&nbsp;&nbsp; hClip = GlobalAlloc(GMEM_MOVEABLE,mystr.GetLength()+1);&nbsp;&nbsp;&nbsp;&nbsp; pstr =(char *) GlobalLock(hClip);&nbsp;&nbsp;&nbsp;&nbsp; strcpy(pstr,mystr);&nbsp;&nbsp;&nbsp;&nbsp; GlobalUnlock(hClip);&nbsp;&nbsp;&nbsp;&nbsp; SetClipboardData(CF_TEXT,hClip);&nbsp;&nbsp;&nbsp;&nbsp; CloseClipboard();&nbsp;}}
void CClipDlg::OnButton2() {&nbsp;// TODO: Add your control notification handler code here&nbsp;if(OpenClipboard())&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(IsClipboardFormatAvailable(CF_TEXT))&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp; HGLOBAL hclip;&nbsp;&nbsp;&nbsp;&nbsp; char *pstr;&nbsp;&nbsp;]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2010-04-02 14:06:00</pubDate>
		</item>
				<item>
		<title><![CDATA[字符串处理的两个函数]]></title>
		<link>http://blog.pfan.cn/bigpig/50355.html</link>
		<description><![CDATA[包含头文件：string.h
函数原型:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char *strdup(const char *)
&nbsp;作用：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 复制字符串
函数原型:&nbsp;&nbsp;&nbsp;&nbsp;char *strrchr(const char *,int)
作用：取得某字符最后出现处起的字符串。
测试代码：
#include "stdafx.h"
int main(int argc, char* argv[]){&nbsp;char *sstr="It's a test/hello";&nbsp;char *dstr;&nbsp;char *mstr;&nbsp;dstr=strdup(sstr);&nbsp;printf("dstr=%s\n",dstr);&nbsp;mstr=strrchr(sstr,'/');&nbsp;printf("mstr=%s\n",mstr);&nbsp;return 0;}]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-12-11 20:12:00</pubDate>
		</item>
				<item>
		<title><![CDATA[飞机模型的代码]]></title>
		<link>http://blog.pfan.cn/bigpig/50255.html</link>
		<description><![CDATA[glPushMatrix();&nbsp;glTranslatef(0.4f,-0.2f,-20.0f);&nbsp;//Draw blade1&nbsp;glPushMatrix();&nbsp;&nbsp;&nbsp; glTranslatef(0.3f,0.0f,1.0f);&nbsp;&nbsp;&nbsp; glColor3f(1.0f,1.0f,1.0f);&nbsp;glScalef(0.04f,0.02f,72.0f);&nbsp;&nbsp;&nbsp; glutWireCube(0.5f);&nbsp;glPopMatrix();&nbsp;//blade 2&nbsp;glPushMatrix();&nbsp;glTranslatef(0.0f,-0.1f,15.5f);&nbsp;glRotatef(10.0f,0.0f,0.0f,1.0f);&nbsp;glScalef(8.0f,0.05f,0.01f);&nbsp;glutWireCube(0.5f);&nbsp;glPopMatrix();&nbsp;//draw body&nbsp;glPushMatrix();&nbsp;glPushMatrix();&nbsp;glColor3f(0.6f,0.2f,0.1f);&nbsp;glTranslatef(0.3f,-0.2f,15.5f);&nbsp;glRotatef(10.0f,0.0f,0.0f,1.0f);&nbsp;glScalef(0.5f,0.3f,0.5f);&nbsp;glutWireCube(1.0f);//&nbsp;glPopMatrix();&nbsp;&nbsp;&nbsp; &nbsp;//Draw the second body&nbsp;//glPushMatrix();&nbsp;glTranslatef(1.2f,-0.45f,10.5f);&nbsp;glRotatef(10.0f,0.0f,0.0f,1.0f);&nbsp;glScalef(5.0f,2.2f,2.5f);&nbsp;glutWireCube(0.5f);&nbsp;glPopMatrix();&nbsp;//Draw tail/*&nbsp;glPushMatrix();&nbsp;glTranslatef(-1.2f,-0]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-12-05 11:21:00</pubDate>
		</item>
				<item>
		<title><![CDATA[第一次画飞机……]]></title>
		<link>http://blog.pfan.cn/bigpig/50206.html</link>
		<description><![CDATA[用opengl中glut库函数画了一个简单的飞机模型，画的不好，还请指教》
&nbsp;]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-12-03 15:58:00</pubDate>
		</item>
				<item>
		<title><![CDATA[创建窗口分区的方法步骤]]></title>
		<link>http://blog.pfan.cn/bigpig/49414.html</link>
		<description><![CDATA[最近在搞一个进行OpenGL编程的框架模板，采用的技术是mfc中的窗口分区视图的方法来显示。但一开始创建窗口分区的时候老是提示创建空白文档失败的错误，后来经过修改，运行正确。下面将这个方法与大家共享。本例不包含任何实质性的操作。仅实现窗口分区。
步骤：
1、创建一个mfc的SGI工程。
2、利用资源管理器创建两个对话框。命名分别为Dialog1、Dialog2.
3，将这两个新建对话框的style属性设置成Child
4、为这两个对话框添加两个类，基类为视图类，假设类名为：Child1.Child2
5，在框架的实现文件中添加刚才新建的两个对话框的头文件
6，重在主框架的OnCreateClient（）函数，在函数体中添加如下代码：
7,&nbsp; 在主框架的的头文件中添加public成员变量 CSplitterWnd&nbsp;&nbsp;&nbsp; m_csplitter;
CRect re;
GetCliebtRect(&amp;re);
CSize paine(re.width()/3,re.Height());
m_csplitter.Create(this,1,2);//创建的窗口分区为1行两列
m_csplitter.CreateView(0,0,RUNTIME_CLASS(Child1),panine,pContext);
m_csplitter.CreateView(0,1,RUNTIME_CLASS(Child2),panine,pContext);
return;
&nbsp;
8,编译运行即可
请勿私自转载]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-10-19 11:00:00</pubDate>
		</item>
				<item>
		<title><![CDATA[c++中模板使用的一个小例子]]></title>
		<link>http://blog.pfan.cn/bigpig/49381.html</link>
		<description><![CDATA[#include&lt;iostream.h&gt;#include&lt;iomanip.h&gt;
/*声明模板函数*/template&lt;class T&gt; void Swap(T &amp;x,T &amp;y);/*&nbsp;&nbsp; Write ：2009年10月17日&nbsp; */
/*定义结构体数据类型*/struct STU{&nbsp;int number;&nbsp;char name[3];&nbsp;float score;};int main(){
/*定义两个成员变量*/&nbsp;STU s1={1001,"s1",90};&nbsp;STU s2={1002,"s2",89};
/*模板的引用*/&nbsp;Swap(s2,s1);&nbsp;cout&lt;&lt;"s1:"&lt;&lt;setw(6)&lt;&lt;s1.number&lt;&lt;setw(6)&lt;&lt;s1.name&lt;&lt;setw(6)&lt;&lt;s1.score&lt;&lt;endl;&nbsp;cout&lt;&lt;"s2:"&lt;&lt;setw(6)&lt;&lt;s2.number&lt;&lt;setw(6)&lt;&lt;s2.name&lt;&lt;setw(6)&lt;&lt;s2.score&lt;&lt;endl;&nbsp;cin.get();&nbsp;return 0;}
/*定义模板函数*/template &lt;class T&gt; void Swap(T &amp;x,T &amp;y){&nbsp;T temp;&nbsp;temp=x;&nbsp;x=y;&nbsp;y=temp;}
注意：在使用setw()函数定义输出格式时要在开始添加#include&lt;iomanip.h&gt;头文件]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-10-18 10:10:00</pubDate>
		</item>
				<item>
		<title><![CDATA[友元类使用的一个小例子]]></title>
		<link>http://blog.pfan.cn/bigpig/49265.html</link>
		<description><![CDATA[// teacher.h
//student's classclass STUDENT{private:&nbsp;//do add variable of students&nbsp;char Gradu_name[10];&nbsp;char Gradu_direction[20];&nbsp;char Gradu_class[10];public:&nbsp;//do add method of student&nbsp;STUDENT(){};&nbsp;STUDENT(char name[],char direction[],char _class[]);&nbsp;void SetStu(char name[],char direction[],char _class[]);&nbsp;~STUDENT(){};&nbsp;friend class TEACHER;};class TEACHER{&nbsp;private:&nbsp;&nbsp;//do add variable&nbsp;&nbsp;char Teacher_name[10];&nbsp;public:&nbsp;&nbsp;//do add method&nbsp;&nbsp;TEACHER(){};&nbsp;&nbsp;TEACHER(char name[]);&nbsp;&nbsp;~TEACHER(){};&nbsp;&nbsp;void ListStudent(TEACHER teacher,STUDENT stu[],int num);};
&nbsp;
//teacher.cpp
#include &lt;iostream.h&gt;#include &lt;string.h&gt;#include "Teacher.h"STUDENT::STUDENT(char name[],char direction[],char _class[]){&nbsp;strcpy(Gradu_name,name);&nbsp;strcpy(Gradu_direction,direction);&nbsp;strcpy(Gradu_class,_class);}void STUDENT::SetStu(char name[],char direction[],char _cl]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-10-14 17:11:00</pubDate>
		</item>
				<item>
		<title><![CDATA[简单数据库管理代码]]></title>
		<link>http://blog.pfan.cn/bigpig/49207.html</link>
		<description><![CDATA[界面部分如上，代码部分不知道怎么发，可以mail我，O(∩_∩)O~]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-10-13 18:50:00</pubDate>
		</item>
				<item>
		<title><![CDATA[椭圆自动变形]]></title>
		<link>http://blog.pfan.cn/bigpig/48775.html</link>
		<description><![CDATA[下面这段代码是在窗口中按下CTROL后画一个椭圆。然后按上下左右键改变椭圆的形状，pageup pagedown键改变椭圆位置。
具体请看代码。呵呵
//全局变量
int icount;int lx=200,ly=200,rx=400,ry=300;//矩形的长宽高#ifndef VK_PAGE_UP#define VK_PAGE_UP 0x021#define VK_PAGE_DOWN 0x022#endif
//具体代码处理逻辑
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){&nbsp;HDC hdc;&nbsp;PAINTSTRUCT ps;&nbsp;HPEN hP;&nbsp;switch(message)&nbsp;{&nbsp;case WM_KEYDOWN:&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;switch(wParam)&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case VK_CONTROL:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icount=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lx=200,ly=200,rx=400,ry=300;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InvalidateRect(hWnd,NULL,TRUE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case VK_RIGHT:&nbsp;&nbsp;&nbsp;&nbsp;]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-09-30 17:09:00</pubDate>
		</item>
				<item>
		<title><![CDATA[窗体处理键盘输入代码]]></title>
		<link>http://blog.pfan.cn/bigpig/48689.html</link>
		<description><![CDATA[此代码仅支持ctrl \up\down\shift的简单处理。组合键还在学习中。有知道的可以共享一下。先谢谢啦
&nbsp;
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){&nbsp;HDC hdc;&nbsp;PAINTSTRUCT ps;&nbsp;TEXTMETRIC tm;&nbsp;//PIONT pt;&nbsp;char *str[]=&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "您按了UP键",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "您按了SHIFT键",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "您按了CTRL和A键",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "您按了DOWN键"&nbsp;};&nbsp;//RegisterHotKey(hWnd,1,VK_CONTROL,VK_A);&nbsp;switch(message)&nbsp;{&nbsp;case WM_KEYDOWN:&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;switch (wParam)&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;case VK_UP:&nbsp;&nbsp;&nbsp;&nbsp;icount=1;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;case VK_SHIFT:&nbsp;&nbsp;&nbsp;&nbsp;icount=2;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;case VK_CONTROL:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icount=3;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;case VK_DOWN://&amp;&amp;VK_B:&nbsp;&nbsp;&nbsp;&nbsp;icount]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-09-29 21:19:00</pubDate>
		</item>
				<item>
		<title><![CDATA[烦]]></title>
		<link>http://blog.pfan.cn/bigpig/48208.html</link>
		<description><![CDATA[最近改一个论坛，基本上已经熟悉了，现在要做的事情是：
1、把一些文字隐藏掉
2、把一些功能模块去掉
3、把论坛的logo标记换掉
4、把论坛的数据库名给改掉
5、收集网站素材
6、申请域名
7、申请论坛备案
8、申请论坛空间
9、上线
10、网站推广运营
&nbsp;
烦啊，不过如果有想合作一起搞的请联系我，发送邮件：liudan319@qq.com&nbsp; 希望合作愉快。]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-09-27 17:16:00</pubDate>
		</item>
				<item>
		<title><![CDATA[vc实现字体的移动和变色]]></title>
		<link>http://blog.pfan.cn/bigpig/48206.html</link>
		<description><![CDATA[代码如下，具体意思不再赘述，很简单.
#include&lt;windows.h&gt;#include&lt;stdlib.h&gt;#include&lt;string.h&gt;
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,UINT wParam,LONG lParam);BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindow(HINSTANCE hInstance,int nCmdShow);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lPCmdLine,int nCmdShow){&nbsp;MSG Msg;&nbsp;if(!InitWindowsClass(hInstance))&nbsp;{&nbsp;&nbsp;return FALSE;&nbsp;}&nbsp;if(! InitWindow(hInstance,nCmdShow))&nbsp;{&nbsp;&nbsp;return FALSE;&nbsp;}
&nbsp;while(GetMessage(&amp;Msg,0,0,0))&nbsp;{&nbsp;&nbsp;TranslateMessage(&amp;Msg);&nbsp;&nbsp;DispatchMessage(&amp;Msg);&nbsp;}&nbsp;return Msg.wParam;}
//define the windowclassnameBOOL InitWindowsClass(HINSTANCE hInstance){&nbsp;WNDCLASS windowclass;&nbsp;windowclass.cbClsExtra=0;&nbsp;windowclass.cbWndExtra=0;&nbsp;windowclass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));&nbsp;windowclass.hCursor=LoadCursor(NULL,IDC_ARROW);&nbsp;windowclass.hIcon=LoadIc]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-09-27 17:10:00</pubDate>
		</item>
				<item>
		<title><![CDATA[windows第一个程序]]></title>
		<link>http://blog.pfan.cn/bigpig/48083.html</link>
		<description><![CDATA[#include&lt;windows.h&gt;#include&lt;stdlib.h&gt;#include&lt;string.h&gt;
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG IParam);&nbsp;&nbsp; // 获取BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){&nbsp;MSG Message;&nbsp;if(!InitWindowsClass(hInstance))&nbsp;{&nbsp;&nbsp;return FALSE;&nbsp;}&nbsp;if(!InitWindows(hInstance,nCmdShow))&nbsp;{&nbsp;&nbsp;return FALSE;&nbsp;}&nbsp;while(GetMessage(&amp;Message,0,0,0))&nbsp;{&nbsp;&nbsp;TranslateMessage(&amp;Message);&nbsp;&nbsp;DispatchMessage(&amp;Message);&nbsp;}&nbsp;return Message.wParam;}
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG IParam){&nbsp;HDC hDC;&nbsp;HBRUSH hBrush;&nbsp;HPEN hPen;&nbsp;PAINTSTRUCT PtStr;&nbsp;switch(iMessage)&nbsp;{&nbsp;case WM_PAINT:&nbsp;&nbsp;hDC=BeginPaint(hWnd,&amp;PtStr);&nbsp;&nbsp;SetMapMode(hDC,MM_ANISOTROPIC);&nbsp;&nbsp;hPen=(HPE]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-09-24 22:05:00</pubDate>
		</item>
				<item>
		<title><![CDATA[学习C++多重继承遇到的问题及解决]]></title>
		<link>http://blog.pfan.cn/bigpig/48036.html</link>
		<description><![CDATA[先说下问题，我声明了一个基类，X，然后又从X虚拟派生了两个类，Y，Z。接着定义类A，A从Y，Z派生而来。X，y，z中均含有一个void&nbsp;f（）函数。现在我在main中定义如下：X&nbsp;*px；A&nbsp;a;px=&amp;a；px-&gt;f();delete&nbsp;px;在运行的时候发现px-&gt;f()调用的是X中的f().而不是我想像中的A中指定的Y：：f()中的f（），经过查阅书本，问题已经解决，先归纳如下：X，Y，Z类中都含有同一个方法，A有派生于Y，Z，因此定义了一个A的实例后，调用f（）方法，在这里如果不指名调用哪一个类中的方法，将会产生错误，为了避免此问题的产生，可以采取的方法如下：（假设我们调用的事Y类中的方法）1、在A类中指名，如：using&nbsp;Y：：f（）；2、在代码中使类Y的派生层次高于类Z的派生层次，因为派生层次越高，调用具有同名的方法时优势越大。举个例子：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在这个问题中我们可以这样定义：我们可以使&nbsp;Y：virtual&nbsp;public&nbsp;X{&nbsp;&nbsp;&nbsp;public：&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;f（）；}Z：public&nbsp;Y{}A:public&nbsp;Z,virtual&nbsp;public&nbsp;X{}此时声明A的实例在调用f（）。则调用的是Y中的方法。还有：&nbsp;&nbsp;&nbsp;Y：virtual&nbsp;public&nbsp;X{&nbsp;&nbsp;&nbsp;public：&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;f（）；}Z：virtual&nbsp;public&nbsp;X{}A：public&nbsp;Y，public&nbsp;Z{}此时声明A的实例在调用f（）。则调用的也是Y中的方法。这就是优势，即派生层次越高，调用同名的方法时有时越明显]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-09-23 22:26:00</pubDate>
		</item>
				<item>
		<title><![CDATA[vc6.0++Zthread库添加于编译]]></title>
		<link>http://blog.pfan.cn/bigpig/48030.html</link>
		<description><![CDATA[这两天都在搞Zthread库，因为要学习C++并发，现在我把我搞的结果写出来和大家分享。
1、从www.zthread.sourceforge.net下载Zthread源文件
2、将include\下的zthread文件夹考到vc安装目录下，如：\Microsoft Visual Studio\VC98\Include
3、新建一个vc静态库的工程，将src文件下的.cxx文件导入到工程中去。注意：在src文件夹下还有其他文件夹，不要将这些文件夹里的.cxx&nbsp; 文件导入到工程中去，以免与src文件下的cxx文件冲突
4、打开“工程\设置\c/c++\code gerenation中的use run timeliberty，选择多线程
5、编译
6，将zthread.lib考到vc安装目录下，如：Microsoft Visual Studio\VC98\Lib
7，从www.zthread.sourceforge.net下载测试代码进行测试。
注：如果上面的又什么问题大家请不要小气，指出来我好修改。谢谢啦。]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-09-23 15:13:00</pubDate>
		</item>
				<item>
		<title><![CDATA[c++模板学习笔记（1）]]></title>
		<link>http://blog.pfan.cn/bigpig/47631.html</link>
		<description><![CDATA[今天在学习C++的时候遇到一个问题，就是编译的时候总是提示一个一个错误，错误信息如下：
&nbsp;error C2087: '&lt;Unknown&gt;' : missing subscript
源代码如下：
#include&lt;iostream.h&gt;#include&lt;stddef.h&gt;template&lt;int R,int C,typename T&gt;int init(T a[R][C]){&nbsp;&nbsp;for(int i=0;i&lt;R;i++)&nbsp;&nbsp;for(int j=0;j&lt;C;j++)&nbsp;&nbsp;&nbsp;a[i][j]=i*j;&nbsp;&nbsp;&nbsp; for(int k=0;k&lt;R;k++)&nbsp;&nbsp;for(int l=0;l&lt;C;l++)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;cout&lt;&lt;"k="&lt;&lt;k&lt;&lt;"l="&lt;&lt;l&lt;&lt;endl;&nbsp;&nbsp;&nbsp;cout&lt;&lt;a[k][l]&lt;&lt;endl;&nbsp;&nbsp;}&nbsp;return 1;}int main(){&nbsp;int a[10][20];&nbsp;init&lt;10,20,int&gt;(a);&nbsp;cin.get();&nbsp;return 0;}
检查了半天才发现是因为编译器不支持动态数组的缘故，函数在应用时参数要采用指针的格式。
现将代码修改如下：
#include&lt;iostream.h&gt;#include&lt;stddef.h&gt;template&lt;int R,int C,typename T&gt;int init(T (*a)[C]){&nbsp;&nbsp;for(int i=0;i&lt;R;i++)&nbsp;&nbsp;for(int j=0;j&lt;C;j++)&nbsp;&nbsp;&nbsp;a[i][j]=i*j;&nbsp;&nbsp;&nbsp; for(int k=0;k&lt;R;k++)&nbsp;&nbsp;for(int l=0;l&lt;C;l++]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-09-13 15:48:00</pubDate>
		</item>
				<item>
		<title><![CDATA[sql高级编程]]></title>
		<link>http://blog.pfan.cn/bigpig/44091.html</link>
		<description><![CDATA[今天上班闲着无事，写了个SQL例子，以供参考
1、--创建一个数据库create&nbsp;database&nbsp;test_danliu2、--创建一个表CREATE&nbsp;TABLE&nbsp;[dbo].[testuser](&nbsp;&nbsp;&nbsp;&nbsp;[ID]&nbsp;[int]&nbsp;NOT&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;[username]&nbsp;[char](10)&nbsp;COLLATE&nbsp;Chinese_PRC_CI_AS&nbsp;NOT&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;[usersex]&nbsp;[char](2)&nbsp;COLLATE&nbsp;Chinese_PRC_CI_AS&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;[address]&nbsp;[char](100)&nbsp;COLLATE&nbsp;Chinese_PRC_CI_AS&nbsp;NULL,&nbsp;CONSTRAINT&nbsp;[PK_testuser]&nbsp;PRIMARY&nbsp;KEY&nbsp;CLUSTERED&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;[ID]&nbsp;ASC)WITH&nbsp;(IGNORE_DUP_KEY&nbsp;=&nbsp;OFF)&nbsp;ON&nbsp;[PRIMARY])&nbsp;ON&nbsp;[PRIMARY]3、--创建不带参的存储过程create&nbsp;procedure&nbsp;[dbo].[table_testuser]asdeclare&nbsp;@i&nbsp;intset&nbsp;@i=0while(@i&lt;10)beginInsert&nbsp;into&nbsp;testuser&nbsp;values(@i,'we','女','安徽')set&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@i=@i+1end4、--创建含不含输出参数的存储过程create&nbsp;procedure&nbsp;[dbo].[checktestuser]&nbsp;@parausername&nbsp;]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-06-01 18:46:00</pubDate>
		</item>
				<item>
		<title><![CDATA[保龄球计分统计]]></title>
		<link>http://blog.pfan.cn/bigpig/42594.html</link>
		<description><![CDATA[#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;struct strike{&nbsp;int frist;&nbsp;int second;&nbsp;struct strike *next;};struct strike *creat(void){&nbsp;struct strike *head;&nbsp;struct strike *p,*q;&nbsp;int i;&nbsp;/*if(head)&nbsp;{&nbsp;&nbsp;free(head);&nbsp;}*/&nbsp;p=head=(struct strike *)malloc(sizeof(struct strike));&nbsp;head-&gt;frist=head-&gt;second=0;&nbsp;for(i=1;i&lt;=10;i++)&nbsp;{&nbsp;&nbsp;q=(struct strike *)malloc(sizeof(struct strike));&nbsp;&nbsp;q-&gt;frist=0;q-&gt;second=0;&nbsp;&nbsp;p-&gt;next=q;&nbsp;&nbsp;p=q;&nbsp;}&nbsp;p-&gt;next=NULL;&nbsp;if(!head)&nbsp;{&nbsp;&nbsp;printf("error");&nbsp;&nbsp;exit(1);&nbsp;}&nbsp;return head;}int setScore(struct strike *head){&nbsp;int i;&nbsp;struct strike *p;&nbsp;p=head;&nbsp;for(i=0;i&lt;11&amp;&amp;p!=NULL;i++)&nbsp;{&nbsp;&nbsp;printf("请输入第%d次击倒的瓶子数:",i+1);&nbsp;&nbsp;scanf("%d",&amp;p-&gt;frist);&nbsp;&nbsp;getchar();&nbsp;&nbsp;printf("%d次的分数：%d\n",i+1,p-&gt;frist);&nbsp;&nbsp;printf("\n");&nbsp;&nbsp;if(i==9)]]></description>
		<author><![CDATA[liudan319]]></author>
		<pubDate>2009-04-27 22:32:00</pubDate>
		</item>
		</channel>
</rss>