简单记录:
1)了解对象的演化

2)数据的抽象
大多数c库都有一组struct和活动在这些struct上的函数,struct相当于一个数据集合,描述一个对象的若干属性
关于包含头文件,以及连接可能出现的问题的总结:
目标文件中函数可能参数类型不符合,编译器讲进行类型转换
在栈中放入int值将转换成float值等情况,如果这将改变栈中变量的值就糟糕了
 关于makefile文件,描述文件间的关系
将变量属于struct的特性引申到函数(解决了各种结构函数名字相抵触的悲剧),那么类就出现了!这样函数所作的事情只与解决问题有关,与运行机制无关(其实计算机替我们做了)。但定义函数时还是要明确指出函数属于哪个结构, 使用范围分解运算符(::),^_^声明后才能使用,相当于编译器进行有效性检查,类似xml文件的dtd,解析器对他的有效性检查。注:system("pause");需要头文件iostream,管道功能?
抽象数据类型和内置类型是一样的,只是调用方式不同。相当于给对象发送消息。

3)隐藏实现
private public protected
嵌套友元:
1声明嵌套的struct
2声明全局范围的一个友元
注: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);
程序例:

#include <stdio.h> 

int main(void

/* redirect standard output to a file */ 
if (freopen("OUTPUT.FIL""w", stdout) == NULL) 
fprintf(stderr, 
"error redirecting stdout\n"); 

/* this output will go to a file */ 
printf(
"This will go into a file."); 

/* close the standard output stream */ 
fclose(stdout); 

return 0
}
 


经过测试还是很管用
但是比如我编译一个cpp程序
如何捕获dos窗口的出错信息呢?
望高手指教