一.Machine Learning
first coding homework
自动判别数据类型,直接回车则输出对象内容
8.1 神经网络:非线性假设
二.王道
1. 上周回顾
(1) 虚拟内存空间
(2)单例模式
与static成员/成员函数特性相关
(3)其他
当定义类时,编译器会为类自动生成哪些函数?
这些函数各自都有什么特点?
若未额外定义,则有:
默认构造函数:按照类內初试值初始化或默认初试化
合成析构函数:执行函数体后销毁类成员
合成拷贝(构造)函数:逐个拷贝到正在构造的类成员中
合成赋值运算符:逐个拷贝赋值到类成员
什么是浅拷贝, 什么是深拷贝?
针对一个指针(尤其是注意动态分配空间的指针),直接拷贝赋值指针内容为浅拷贝,容易造成内存泄漏与不期望的数据结果,通过销毁原空间,重新申请需要的空间后,将全部内容赋值到新空间,并使指针指向该空间,称为深拷贝
2. new/delete
类內重载只对该类生效,如在char类內重载则对new char生效,其他表达式仍然调用其他类的默认new表达式
构造或者析构若为private则无法定义栈对象
类外使用new时仍然要调用构造函数,解决办法为类內使用另一static函数包装new;
new运算符函数若为private则无法定义堆对象
3.流
枚举类型表示流状态
grep “查找内容” -n
find /
(1) 枚举类型:
enum WEEKDAY{ \\该语句定义了一个枚举类型
MONDAY = 1,
TUSEDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
};
enum WEEKDAY day; \\该语句声明了一个枚举类型的变量
相比#define的优势为自增赋值,默认MONDAY为0,后续自增1,本身为常量,除定义时外不能赋值
(2) 缓冲区
全缓冲:缓冲区满才进行IO:磁盘文件IO
行缓冲:换行即进行IO:标准/键盘IO
不缓冲:即时IO:cerr/stderr
endl : 用来完成换行,并刷新缓冲区
ends : 在输入后加上一个空字符,然后再刷新缓冲区
flush : 用来直接刷新缓冲区的
unitbuf : 在每次执行完写操作后都刷新输出缓冲区
nounitbuf : 让流回到正常的缓冲方式
以上均直接对流使用输入运算符:
cin<<unitbuf<<“example”<<nounitbuf<<ends;
cout代价比printf高
(3)explicit
在函数返回值类型前声明,禁止隐式类型转换
(4)流关联
输入流被关联到一个输出流时,任何试图从输入流读取数据的操作都会先刷 新关联的输出流。标准库将 cout 和 cin 关联在一起
(5) 文件流
若使用输入输出运算符到string以空格为断点,getline则为行
直接打开的ofstream不论输出多少数据,原来数据均被覆盖