一、fork函数
创建一个和当前进程映象一样的进程。
头文件:
#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);
成功调用fork( )会创建一个新的进程,它几乎与调用fork( )的进程一模一样,这两个进程都会继续运行。在子进程中,成功的fork( )调用会返回0。在父进程中fork( )返回子进程的pid。如果出现错误,fork( )返回一个负值。
二、析构函数
与构造函数对应,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统会自动执行析构函数。
析构函数名也应与类名相同,只是在函数名前面加一个位取反符以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。
如果自定义了析构函数,编译器在执行时会先调用自定义的析构函数再调用系统生成的析构函数。
析构调用顺序:
1、派生类本身的析构函数
2、对象成员析构函数
3、基类析构函数
三、重载、重写和覆盖
重写和覆盖是一个含义。
1、重载:两个函数名相同,但是参数列表不同(个数,类型),返回值类型没有要求,在同一作用域中。
2、重写:子类继承了父类,父类中的函数是虚函数,在子类中重新定义了这个虚函数,这种情况是重写。
四、实现++i和i++
++i
int& int::operator++()
{
*this +=1;
return *this;
}
i++
const int int::operator(int)
{
int oldValue = *this;
++(*this);
return oldValue;
}