摘要: 首先在SQL2000企业管理中建立一个数据库student,然后创建一个表stu_info字段和值。 然后利用ADO访问MS SQL2000 要求: 1.输出stu_info表内的每一条记录 2.添加一条新记录 3.删除一条记录#include <iostream>#include <iomanip> //要用到 setw()using namespace std; //名字空间class student{ public: char snum[10]; //学号 char sname[10]; //姓名 char ssex[2]; //姓别 long sage; //... 阅读全文
posted @ 2013-11-26 21:21 songnb_7 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 1、在类的定义中进行的,只有const 且 static 且 integral 的变量。2、在类的构造函数初始化列表中, 包括普通变量,const常量(不包含第一种情况)和Reference变量。3、在类的定义之外初始化的,包括static变量。因为它是属于类的唯一变量。4、普通的变量可以在构造函数的内部,通过赋值方式进行。当然这样效率不高。5.const数据成员(非static)必须在构造函数的初始化列表中初始化。6.数组成员是不能在初始化列表里初始化的。7.const static 和static const是一样的,这样的变量可以直接在类定义中初始化,也可以在类外。说明了一个问题:C++ 阅读全文
posted @ 2013-08-24 22:24 songnb_7 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 因为类的静态成员变量是所有实例共用的.所以得在类外初始化.调用的时候可以通过对象调用,也可以通过类直接调用classA{public:inti;//有默认值};classB{public:staticintn;staticAAobj;};intB::n=1;//静态成员变量的初始化AB::Aobj;//静态成员变量的初始化(实例化)voidmain(){BBobj;printf("B::n=%dBobj.n=%dBobj.Aobj.i=%d/n",B::n,Bobj.n,Bobj.Aobj.i);}私有的静态成员变量也是放在类外初始化的.这看起来跟它的私有属性不相符.再做下 阅读全文
posted @ 2013-08-24 21:43 songnb_7 阅读(175) 评论(0) 推荐(0) 编辑
摘要: new 是一个操作符,可以重载malloc是一个函数,可以覆盖new 初始化对象,调用对象的构造函数,对应的delete调用相应的析构函数malloc仅仅分配内存,free仅仅回收内存 阅读全文
posted @ 2013-08-22 22:06 songnb_7 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 在类中,如果什么都没有,则类占用1个字节,一旦类中有其他的占用空间成员,则这1个字节就不在计算之内,如一个类只有一个int则占用4字节而不是5字节。如果只有成员函数,则还是只占用1个字节,因为类函数不占用空间虚函数因为存在一个虚函数表,需要4个字节,数据成员对象如果为指针则为4字节,注意有字节对齐,如果为13字节,则进位到16字节空间。子类会继承父类的大小,虚继承因为引入了指针所以加4无论多少个虚函数,大小都是4 阅读全文
posted @ 2013-08-21 20:58 songnb_7 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 定义const成员函数时,把const关键字放在函数的参数表和函数体之间,而不是将const放在函数声明前,因为这样做意味着函数的返回值是常量,意义完全不同。1、const成员函数不能修改非常量成员变量,只能访问,不能修改 我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值。如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。2、const对象只能调用cons 阅读全文
posted @ 2013-07-25 10:41 songnb_7 阅读(511) 评论(0) 推荐(0) 编辑
摘要: #include #include #include struct person {int a;int m;char b;char c;};#define FIND(type, member) (size_t)&(((type *)0)->member)//这里面size_t这样定义的,typedef unsigned int size_t,定义在stddef.h文件中.int main(){int entry1 = FIND(struct person, a); int entry2 =FIND(struct person, b); int entry3=FIND(struct 阅读全文
posted @ 2013-07-24 17:54 songnb_7 阅读(887) 评论(0) 推荐(1) 编辑
摘要: 先看一个结构体:struct S1{ char c; int i;};sizeof(s1)在VC6中按默认设置得到的结果为8。S1 s1 = { 'a', 0xFFFFFFFF };定义上面的变量后,加上断点,运行程序,观察s1所在的内存,你发现了什么以我的VC6.0(sp6)为例,s1的地址为0x0012FF78,其数据内容如下:0012FF78: 61 CC CC CC FF FF FF FF 阅读全文
posted @ 2013-07-24 17:38 songnb_7 阅读(170) 评论(0) 推荐(0) 编辑
摘要: #include #include #include 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 << (int)b << endl; cout << 阅读全文
posted @ 2013-07-24 16:06 songnb_7 阅读(356) 评论(0) 推荐(0) 编辑
摘要: MFC中OnDraw与OnPaint的区别OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,没有响应消息的功能.当视图变得无效时(包括大小的改变,移动,被遮盖等等),Windows发送WM_PAINT消息。该视图的OnPaint处理函数通过创建CPaintDC类的DC对象来响应该消息并调用视图的OnDraw成员函数.OnPaint最后也要调用OnDraw,因此一般在OnDraw函数中进行绘制。TheW 阅读全文
posted @ 2013-07-18 11:37 songnb_7 阅读(181) 评论(0) 推荐(0) 编辑