简单记录:1)了解对象的演化
2)数据的抽象大多数c库都有一组struct和活动在这些struct上的函数,struct相当于一个数据集合,描述一个对象的若干属性关于包含头文件,以及连接可能出现的问题的总结:目标文件中函数可能参数类型不符合,编译器讲进行类型转换在栈中放入int值将转换成float值等情况,如果这将改变栈中变量的值就糟糕了 关于makefile文件,描述文件间的关系将变量属于struct的特性引申到函数(解决了各种结构函数名字相抵触的悲剧),那么类就出现了!这样函数所作的事情只与解决问题有关,与运行机制无关(其实计算机替我们做了)。但定义函数时还是要明确指出函数属于哪个结构, 使用范围分解运算符(::),^_^声明后才能使用,相当于编译器进行有效性检查,类似xml文件的dtd,解析器对他的有效性检查。注:system("pause");需要头文件iostream,管道功能?抽象数据类型和内置类型是一样的,只是调用方式不同。相当于给对象发送消息。
3)隐藏实现private public protected嵌套友元:1声明嵌套的struct2声明全局范围的一个友元注:struct与friend声明分开
4)句柄类 一个结构体,结构体的实现部分在另一个文件中,对于产生一个指针来说已经足够了
5)初始化与清除非本地goto语句也会调用析构函数,用c语言库中的setjmp()和longjmp()函数可以不引发析构函数的调用
空间分配
函数重载语言的冗余,缺省参数1只有参数列表的后部参数才可是缺省的2开始使用缺省参数,那么它后面的所有参数是缺省的
void f(int x,int,float y)x,y都能被引用,但是中间的参数就不可以,因为它没有名字。如果函数体内没有使用中间的参数那么编译器不会发出警告,如果中间的参数有名字就会发出警告。表明一个逻辑错误
6)位向量类操作符重载缺省参数例子输出重定向问题:函数名: freopen 功 能: 替换一个流 用 法: FILE *freopen(char *filename, char *type, FILE *stream); 程序例: