转瞬之间已经过了农历的08年,进入鼠年之后就是我人生的第三个回合开始了。对很多人来说,人生的第三个回合应该是最灿烂的,最美丽的。要有所作为也差不多就在这个年龄。不过,我尚且不会把自己的目标规划到下一个12年的末端,大概3-4年之内要做些什么事情是有的。有目标还是好的,起码不会让自己迷失。
最近感觉在电驴上下歌越来越慢了。中国的网络环境已经趋向于共产主义,别没被政府强制扼杀,反倒被群众的不厚道行为给毁了。我现在自己也一直保持着2-3张专辑的共享,而且任何P2P软件都不限速。
这次的C++笔记是面向过程部分。
function objects,某种类实体对象,对函数调用运算符进行了重载,可使function objects被当成一般函数调用。标准库事先定义的function objects有6个算术运算,6个关系,3个逻辑运算。
欲使用function objects,需包含<functional>
function objects Adapters(配接器)对function objects进行修改,使其从二元运算变成一元,提高效率。
应用程序内存区域:堆(new,malloc)、栈(实参)、全局数据区(全局变量)
为了函数通信将对象至于全局作用域是冒险的,使用局部静态对象好过使用全局的。静态对象在局部作用域结束后仍然存在,所以可以返回一个局部静态对象的地址,若返回一个局部非静态对象的地址,则会引起一个警告。局部静态对象属于某个函数或作用域内。
inline函数,将调用操作改为一份函数码副本。inline要求体积小,常被调用。
重载函数:参数类型或者个数不同
模板函数:将单一函数的内容与希望显示的各种vector类型绑定起来.
template <typename T>
void func(const vector<T> &vec)
函数主体不变,仅仅改变其中用到的数据类型时,应用模板函数。重载用于提供不同的实现方式。
函数指针:必须指明其所指向的函数返回值类型和参数表。
const vector<int>* (*seq_ptr)(int);
函数指针为0,表明不指向任何函数。若要指向任何函数,直接将函数名附给指针。
seq_ptr=funName
枚举enum之后的名称可有可无,enum{},括号内的数从0开始。
把函数声明放在头文件中,把函数定义在代码文件。
函数只能有一份定义,可有多份声明。所以不把函数定义在头文件中,但是inline函数除外。
const object和inline函数是一份定义的例外情况,它们可以在头文件中定义。
const object一出文件之外便不可见。
全局变量若可能被多个文件存取,就要声明在头文件中。变量或对象的声明,应该加extern,否则被看作定义。若加了extern而且初始化了变量,则同样被看作定义。
