一
c++的编译器虽然能提供比C语言更多的功能,但是c++编译器更加严格,对安全性方面要求更高(安全性包括了初始化与清除俩个方面),为了保证安全性,在c++编程中经常会使用到构造函数来初始化对象的一些数据(例如private成员)
下面是一个简单地例子:
class x{
private:
int i;
puiblic:
x();
}
void f(){
x a;
}
当执行x这个对象的时候,当程序执行到了a这里时,构造函数就自动调用,因为编译器已经在a的定义处插入了一个x::x()的调用。
构造函数的参数保证对象的所有部分都被初始化为了合适的值。
负责清除工作的被称为析构函数,析构函数是在程序将要结束的时候自动调用,同时通过析构函数来保证清除的执行。例如:
class a{
public:
a();
~a(){
cout<<"hello world";
}
};
void f(){
a A;
}
当程序执行到a处时,构造函数自动执行,当对象a将要执行结束时析构函数就会自动调用,输出“hello world”。
二
变量是先定义后分配空间。
构造函数也要到对象的定义时才会被调用,因为标识符此时才有效。
三
缺省构造函数即不带任何参数的函数,当我们需要创建一个对象而又不知道任何的参数之类的时它就派上大用场了。
四
函数重载
以下是一组例子:
int aaa (int a=0,int b=0,int c=0){
return a+b+c;
}
载这个函数里面我们给里面的参数设置了默认的初始值,也可以说初始化,但我们没有给参数时return 0+0+0;当我们只传入了a=1时,return 1+0+0;以此类推(注意,如果要附初始值时应遵循靠右原则,给了默认值的往右靠),这就是函数重载。
当然,重载还包括返回值重载(例如int aaa,float aaa)。
五
安全类型链接:
所有函数使用前都要先声明编译器不会给我们自动添加声明,如果未声明直接使用的话系统会报错。
六
插入符(<<),提取符(>>)。
endl(操纵算子)作用是插入一行并清空流(消除所有储存在内部流缓冲区里的还没有输出的字符),也可以只清空流。