随笔分类 -  VC 12.03

摘要:友元函数和友元类采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。友元函数:友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在 阅读全文

posted @ 2012-04-29 21:02 无忧consume 阅读(221) 评论(0) 推荐(1) |

摘要:在VS2008 VC++项目中,新建了一个cpp文件,然后在物理硬盘上手动删除了,或是手动移动了地址,就出现如下错误。1>------ Build started: Project: test, Configuration: Debug Win32 ------1>Compiling...1>random.cpp1>c1xx : fatal error C1083: Cannot open source file: '.\XX.cpp': No such file or directory解决方法是:到项目文件test.vcproj 中找到下面一段代码, 阅读全文

posted @ 2012-04-28 23:12 无忧consume 阅读(586) 评论(0) 推荐(0) |

摘要:#include <iostream>using namespace std;struct vertex{ int x; int y; int z; // Input and Output friend std::ostream& operator<<(std::ostream& os, const vertex& vo); };std::ostream&operator<<(std::ostream& os, const vertex& vo){ return os << "<&q 阅读全文

posted @ 2012-04-27 22:54 无忧consume 阅读(224) 评论(0) 推荐(0) |

摘要:在用VS2005或VS2008的VC++开发产品时,经常遇到的一个问题就是最终编译出的可执行文件Exe、Dll、Ocx之类会需要MSVCR90.dll、MSVCR80.dll等C库函数运行时Dll的支持,在一些较老的系统,如XP 中,经常不具备这些新版本的运行库,导致产品发布推广成为一个严重的问题。在2008年我还在开发一款网游时,也遇到了同样的问题,虽然想尽了办法,也无法屏蔽对这个动态库的引用,不得已,客户端就又返回老的VS2003环境中进行编译开发,最终发布。 可以使用VS2008自带的安装程序制作工具,生成一个最简的VC++ Redistributable 包,体积也很小,但是一样... 阅读全文

posted @ 2012-03-20 20:21 无忧consume 阅读(376) 评论(0) 推荐(0) |

摘要:第一步,先运行这个软件(就是生成的EXE),把他的各个功能都试一下;第二步,将代码按各个功能模块分组(自己在工程中建目录管理);第三步,按功能模块单个阅读代码(同时自己增加注释);第四步,调试运行各个功能模块(同时自己增加注释)。 利器:调试 阅读全文

posted @ 2012-03-19 16:08 无忧consume 阅读(179) 评论(0) 推荐(0) |

摘要:一般stl中要是不是普通数据类型,用指针更优效一点。为了防止偷偷的拷贝构造函数 阅读全文

posted @ 2012-03-16 19:57 无忧consume 阅读(159) 评论(0) 推荐(0) |

摘要:http://www.cnblogs.com/cxun/archive/2010/03/07/1680427.html如果在很短的时间内连接获取随机数,会发现获取的随机数是同一个,下面例子可以实现短时间内快速获取不一样的随机数:#include <windows.h>#include <iostream>using namespace std;//#define USE_QUICK_RANDDWORD WINAPI thread(PVOID pBuf){ LARGE_INTEGER li; QueryPerformanceCounter(&li); srand( 阅读全文

posted @ 2012-03-15 12:35 无忧consume 阅读(255) 评论(0) 推荐(0) |

摘要:http://www.cnblogs.com/cxun/archive/2009/02/24/1397153.html#include<iostream>#include<io.h>#include<sys\stat.h>#include<afx.h>#define_AFXDLLusingnamespacestd;voidmain(){//此文件在工程打开状态下为不可访问char*filepath="..\\test.ncb";//方法一struct_statinfo;_stat(filepath,&info);int 阅读全文

posted @ 2012-03-15 12:33 无忧consume 阅读(216) 评论(0) 推荐(0) |

摘要:typedef 的用法用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb;//这多数不符合我们的意图,它只声明了一个指向字符变量的指针,//和一个字符变量;以下则可行:typedef char* PCHAR;PCHAR pa, pb; 用途二:用在旧的C代码中,帮助struct。以前的代码中,声明struct新对象时,必须要带上struct,即形式为:struct结构名对象名,如:struct tagPOINT1{int x;int y;};struct tagPOINT1 p1;而在C++中,则可以直接写:结构名对象名,即:.. 阅读全文

posted @ 2012-03-15 12:14 无忧consume 阅读(228) 评论(0) 推荐(0) |

摘要:http://www.cnblogs.com/cxun/archive/2007/05/05/736208.html一、生成DLL1.新建DLL工程生成DLL可以多种方法,这里介绍一种。在VS中,新建一个空的项目,选Win32 Console Application,新建完后修改工程属性:把生成EXE改为生成DLL2.源代码:#include <iostream>#include <windows.h>using namespace std;#ifdef __cplusplus// if used by C++ codeextern "C" {// 阅读全文

posted @ 2012-03-15 12:10 无忧consume 阅读(384) 评论(0) 推荐(0) |

摘要:#include <stdio.h>#include <stdlib.h>#include <string.h> void main() { char filename[16] = "MHT"; char *type = ".txt"; char str[4]; int i = 10; itoa(i, str, 10); printf("%s %d\n", filename, sizeof(filename)); //sizeof 全部长度 printf("%s %d\n", f 阅读全文

posted @ 2012-03-14 23:44 无忧consume 阅读(187) 评论(0) 推荐(0) |

摘要:#include <string.h>#include <stdio.h>int main(){ char a[30] = "string (a)"; char b[30] = "hi\0zengxiaolong"; int i;strcpy(a, b); //a[30] = "hi\0ing (a)" printf("strcpy():"); for(i = 0; i < 30; i++) printf("%c", a[i]); //hiing (a)memcpy 阅读全文

posted @ 2012-03-14 22:04 无忧consume 阅读(200) 评论(0) 推荐(0) |

摘要:http://blog.pfan.cn/cracker007/17239.html初学者经常被这个问题所困惑: char *p="abc"==>"abc"是一个const char*,为什么能够赋值给char *? 按照 C/C++ 标准的描述,"abc" 是 string literal (字符字面量、字符文字量),具有静态存储性质,类型是数组类型,并且不能被改变。注意:"abc" 是一个数组类型的对象,是左值。当然左值可以转化为右值使用,就像数组类型的对象可以转化为指针一样。虽然 "abc&qu 阅读全文

posted @ 2012-03-13 13:42 无忧consume 阅读(355) 评论(0) 推荐(0) |

该文被密码保护。

posted @ 2012-03-13 11:43 无忧consume 阅读(1) 评论(0) 推荐(0) |

摘要:C++中令人混淆的3个new和delete在深入学习C++的过程中遇到3个new和delete让我十分迷惑,经过学习,有了点初步理解的感觉。总结如下C++中,内存分配和对象构造紧密纠缠,就像对象析构和内存回收一样。使用new 表达式的时候,分配内存,并在该内存中构造一个对象,使用delete的时候,调用析构函数撤销对象,并将对象所用内存返还给系统。C++提供了一下两种方法来分配和释放未构造的原始内存:1)allocator类的allocate 和 deallocate成员函数2)标准库中的 operator new 和 operator delete。C++还提供了在原始未构造的内存中构造和析 阅读全文

posted @ 2012-03-13 10:32 无忧consume 阅读(257) 评论(0) 推荐(0) |

摘要:线程是有趣的http://www.ibm.com/developerworks/cn/linux/thread/posix_thread1/了解如何正确运用线程是每一个优秀程序员必备的素质。线程类似于进程。如同进程,线程由内核按时间分片进行管理。在单处理器系统中,内核使用时间分片来模拟线程的并发执行,这种方式和进程的相同。而在多处理器系统中,如同多个进程,线程实际上一样可以并发执行。那么为什么对于大多数合作性任务,多线程比多个独立的进程更优越呢?这是因为,线程共享相同的内存空间。不同的线程可以存取内存中的同一个变量。所以,程序中的所有线程都可以读或写声明过的全局变量。如果曾用 fork() 编 阅读全文

posted @ 2012-03-12 14:49 无忧consume 阅读(226) 评论(0) 推荐(0) |

摘要:大多数情况下都是vc安装的问题试试下面的方法吧:(转的)Compiling...Error spawning cl.exe3-6.exe - 1 error(s), 0 warning(s)可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的“Compiling... ,Error spawning cl.exe”错误提示给郁闷过。很多人的选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。因此问题可以按照以下方法解 阅读全文

posted @ 2012-03-11 23:27 无忧consume 阅读(360) 评论(0) 推荐(0) |

摘要:中间件技术百科名片 中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必需要有一个通信中间件,即中间件=平台+通信,这个定义也限定了只有用于分布式系统中才能称为中间件,同时还可以把它与支撑软件和实用软件区分开来。一 什么是中间件? 为什么要使用中间件? 具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工... 阅读全文

posted @ 2012-03-02 21:08 无忧consume 阅读(498) 评论(0) 推荐(0) |

摘要:如同我所说的,结构图显示建模系统的静态结构。关注系统的元件,无需考虑时间。在系统内,静态结构通过显示类型和它们的实例进行传播。除了显示系统类型和它们的实例,结构图至少也显示了这些元素间的一些关系,可能的话,甚至也显示它们的内部结构。 贯穿整个软件生命周期,结构图对于各种团队成员都是有用的。一般而言,这些图支持设计验证,和个体与团队间的设计交流。举例来说,业务分析师可以使用类或对象图,来为当前的资产和资源建模,例如分类账,产品或地理层次。架构师可以使用组件和部署图,来测试/确认他们的设计是否充分。开发者可以使用类图,来设计并为系统的代码(或即将成为代码的)类写文档。特殊的类图 UML 2... 阅读全文

posted @ 2012-03-02 20:04 无忧consume 阅读(281) 评论(0) 推荐(0) |

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3