随笔分类 - C/C++
摘要:当在编写代码中用到异常,非常重要的一点是:“如果异常发生,程序占用的资源都被正确地清理了吗?”大多数情况下不用担心,但是在构造函数里有一个特殊的问题:如果一个对象的构造函数在执行过程中抛出异常,那么这个对象的析构函数就不会被调用。困难的事情是在构造函数中分配资源。如果在构造函数中发生异常,析构函数将没有机会释放这些资源。这个问题经常伴随着”悬挂“指针出现。例如:// Naked pointers.#include #include using namespace std;class Cat{public: Cat() {cout #include using namespace std...
阅读全文
摘要:星期几【结果填空】 (满分5分) 1949年的国庆节(10月1日)是星期六。 今年(2012)的国庆节是星期一。 那么,从建国到现在,有几次国庆节正好是星期日呢? 只要答案,不限手段! 可以用windows日历,windows计算器,Excel公式,。。。。。 当然,也可以编程! 不要求写出具体是哪些年,只要一个数目! 千万不要提交源代码! 答案不要写在这里,写在“解答.txt”中View Code #include using namespace std;const int a[13] = {0, 31, 28, 31, 30, 31,...
阅读全文
摘要:微生物增殖 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。 现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。 如果X=10,Y=90 呢? 本题的要求就是写出这两种初始条件下,60分钟后Y的数目。 题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只 Y 就是最终导致 Y 种群灭绝的最后一根稻草! 请忍住悲伤,把答案写在“解答.txt”中,...
阅读全文
摘要:博客内容经历了一次整理,以前发的博文太散、没什么水准,搞的随笔分类越来越多orz,这次把CPP这本书的课后练习的程序代码放到一起方便查阅与修改。。嗯9.6.1#ifndef _9.6.1_H_#define _9.6.1_H_#include #include const int Len = 40;struct golf{ char fullname[Len]; int handicap;};//non-interactive version//function sets golf structure to provided name, handicap//using values...
阅读全文
摘要:// binary.cpp -- binary file I/O#include #include #include #include //for exit()using namespace std;const char * file = "planets.dat";struct planet{ char name[20]; //name of planet double population; //its population double g; //its acceleration of gravity};inline void eat...
阅读全文
摘要:#ifndef _WORKER_H_#define _WORKER_H_#include /**using std::cout;using std::cin;using std::endl;/**> id; while(cin.get() != '\n') { continue; }}/**> panache; while(cin.get() != '\n') { continue; }}/**> voice; while(cin.get() != '\n') { continue; }}/**#i...
阅读全文
摘要:#ifndef _STUDENT_H_#define _STUDENT_H_#include #include #include class Student : private std::string, private std::valarray{private: typedef std::valarray ArrayDb; //private method for scores output std::ostream & arr_out(std::ostream & os) const;public: Student() ...
阅读全文
摘要:#ifndef _STUDENT_H_#define _STUDENT_H_#include #include #include class Student{private: typedef std::valarray ArrayDb; std::string name; //contained object ArrayDb scores; //contained object //private method for scores output std::ostream & arr_out(std::ostream & os) const;publi...
阅读全文
摘要:#ifndef _ACCTABC_H_#define _ACCTABC_H_//(*#include #include //*)//Abstract Base Classclass AcctABC{private: std::string fullName; long acctNum; double balance;protected: struct Formatting { std::ios_base::fmtflags flag; std::streamsize pr; }; const std::string & Fu...
阅读全文
摘要:#ifndef _BRASS_H_#define _BRASS_H_#include //Brass Account Classclass Brass{private: std::string fullName; long acctNum; double balance;public: Brass(const std::string & s = "Nullbody", long an = -1, double bal = 0.0); void Deposit(double amt); virtual void Withdraw(double amt); ...
阅读全文
摘要:最近在学C++,这个是照葫芦画瓢的五子棋C++版- -依赖SDL_PingGe_1.3,很多实用的函数,类我都封装成DLL了调用起来真是舒服啊。。不过一方面要对DLL做测试,一方面要开发,一个人还真是累啊。按钮我也取消了,毕竟只是花架子,比C版多了一个开场动画,鼠标也被修改成了一只小手,还有分出胜负后五子将会被一条红线连接(这方面的数据交互没做好)AI部分做了些修改,细化了计分表,总体水平强了不少,但是同学说缺少攻击性,哈哈没办法啦,暂时不去优化了。其实还有一个小BUG。。但是我很懒,也没那么多时间去仔细检查AI部分了,留给大家吧BUG:当中间部位还差一子便可连成五子时,AI本应是最优先落中间
阅读全文
摘要:人生第一个图形界面程序,拉出来纪念纪念- -数据共享上基本上全是全局变量,也没有任何FPS限制。。当然没有图片你也是运行不了的,就当作参考吧,AI部分很简单的按照一个计分表来算分//SDL头文件#include #include #include #include #include "SDL/SDL.h"#include "SDL/SDL_image.h"#include "SDL/SDL_ttf.h"#include "SDL/SDL_mixer.h"//#program comment(lib,"SD
阅读全文
摘要:这篇随笔专门做SDL的DLL开发。下面这个版本暂且称为Beta版本吧。/* typedef void (*FUNCTION)(void); HMODULE HDll; HDll = LoadLibrary("SDL_PingGe.dll"); if(HDll == NULL) { printf("Load library failed!\n"); FreeLibrary(HDll); return 0; } FUNCTION fun = FUNCTION(GetProcAddress(HDll,MAKEINTR...
阅读全文
摘要:void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int* pint;void* pvoid;pvoid = pint;//不过不能 pint= pvoid; 如果要将pvoid赋给其他类型指针,则需要强制类型转换如:pint= (int *)pvoid;②在ANSIC标准中,不允许对void指针进行算术运算如pvoid++或pvoid+=1等,而在GNU中则允许,因为在缺省情况下,GNU认为void*与char *一样。sizeof(*pvoid)== si
阅读全文
摘要:加入了像素填充函数,必须要在一个指定颜色的边界范围内,边界必须没有缺口。加入了鼠标类/* typedef void (*FUNCTION)(void); HMODULE HDll; HDll = LoadLibrary("SDL_PingGe.dll"); if(HDll == NULL) { printf("Load library failed!\n"); FreeLibrary(HDll); return 0; } FUNCTION fun = FUNCTION(GetProcAddress(HDll,M...
阅读全文
摘要:转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/16/90211.html有一种被称为位域(bit-field) 的特殊的类数据成员,它可以被声明用来存放特定数目的位。位域必须是有序数据类型。它可以有符号也可以无符号。例如:class File {// unsigned int modified : 1; // 位域 (bit-field)};View Code 位域标识符后面跟有一个冒号,然后是一个常量表达式指定位数。例如modified 是一个只有一位构成的位域。 在类体中相邻定义的位域,如果可能的话,它们会被放在同一个整数的连续位中
阅读全文
摘要:转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/16/90228.html偶然看到一道C++面试题:void foo(void) { unsigned int a = 6; int b = -20; (a+b>6)?puts(">6"):puts("6。 这道题主要考察两个东西。 1.隐式类型转换:int型变量转化成unsigned int, b成了正数. 2.负数的补码:计算机系统中的数值是以补码形式表示(存储)的。一、C++隐式类型转换 C++定义了...
阅读全文
摘要:转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/21/90734.html在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的,因为所有的进程用的都收同一块地址空间;而在Win32环境中,情况却发生了变化,每个进程都有了它自己的地址空间,DLL函数中的代码所创建的任何对象(包括变量)都归调用它的进程所有。当进程在载入DLL时,操作系统自动把DLL地址映射到该进程的私有空间,也就是进程的虚拟地址空间,而且也复制该DLL的全局数据的一份拷贝到该进程空间。(在物理内存中,多进程载入DLL时,DLL的代码段实际上是只加载了一次,只
阅读全文
摘要:转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/20/90663.html前面介绍了怎么从DLL中导出函数和变量,实际上导出类的方法也是大同小异,废话就不多说了,下面给个简单例子示范一下,也就不多做解释了。DLL头文件: #ifndef _DLL_SAMPLE_H#define _DLL_SAMPLE_H// 通过宏来控制是导入还是导出#ifdef _DLL_SAMPLE#define DLL_SAMPLE_API __declspec(dllexport)#else#define DLL_SAMPLE_API __declspec(dl
阅读全文
摘要:转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/20/90643.html前面介绍了怎么从DLL中导出函数,下面我们来看一下如何从DLL中导出变量来。声明为导出变量时,同样有两种方法: 第一种是用__declspec进行导出声明#ifndef _DLL_SAMPLE_H#define _DLL_SAMPLE_H// 如果定义了C++编译器,那么声明为C链接方式#ifdef __cplusplusextern "C" {#endif// 通过宏来控制是导入还是导出#ifdef _DLL_SAMPLE#define DLL
阅读全文