例:为Clock类添加构造函数
一 实现构造函数:初始化数据成员
赋值语句的方式:
表达式表的方式:
二 传给构造函数实参的两种方式:
className obj=parameter;
如果构造函数有一个或多个参数:
className obj(parmaeter list);
如果构造函数有参数,但是在创建对象时又不给出对应的实参,此时边编译出错。
三 重载构造函数
一个类可以提供多个构造函数,即构造函数的重载。
重载的目的是为了满足不同的初始化需要。
四 具有缺省参数的构造函数
构造函数也可以有缺省参数。如果在类外实现该函数时,就不能再说明缺省值了。
五 缺省的构造函数
对于没有构造函数的类,编译器将会自动为它生产一个没有参数的构造函数,该函数不做任何工作。
六 析构函数
1 析构函数
与构造函数相对的是析构函数,C++通过析构函数来处理对象被销毁时的清理工作。
析构函数没有返回类型,没有参数,函数名是在类名前加"~";
析构函数将会在对象的生存期结束后被自动调用。
如果没有进行显式说明,编译器将会生产一个不做任何事的缺省的析构函数。
举
2 动态内存管理容易出错
删除动态内存失败。
读写以删除的对象。
对同一个内存空间使用两次delete.
2个以上的指针指向同一个动态分配的对象;
一个指针,多次删除;
七 拷贝构造函数
1 拷贝构造函数
如果将与自己同类的对象的引用作为参数时,该构造函数就称为拷贝构造函数
拷贝构造函数的特点:
首先,它是一个构造函数,当创建对象时系统会自动调用它。
其次,它将一个已经创建好的对象作为参数,根据需要将该对象中的数据成员逐一对应地赋值给新对象。
2 缺省的拷贝构造函数
如果没有定义拷贝构造函数,那么编译器会为该类产生一个缺省的拷贝构造函数。
缺省的拷贝构造函数使用位拷贝的方法来完成对象到对象的复制。
缺省的拷贝函数的quedian在大多数情况下,缺省拷贝构造函数工作得很好,但在一些特殊的场合,它的表现将不尽人意。
3 改进办法:增加拷贝构造函数
4拷贝构造函数起作用的地方
拷贝构造函数除了在创建新对象时被调用外,还在以下情况被调用:
对象作为函数参数;
函数返回对象;