1.重载成员函数
编写多个名称相同但参数不同的函数,成员函数也可也重载。
class Rectangle
{
public:
Rectangle(int width, int height);
~Rectangle(){}
void drawShap();
void drawShap(int width, int height);
private:
int width;
int height;
};
int main()
{
Rectangle box(30,5);
std::cout <<"drawShape(): \n";
box.drawShape();
std::cout <<"drawShape(40,2): \n";
box.drawShape(40, 2);
return 0;
}
编译器根据参数的类型和数值决定调用哪个版本。
2.使用默认值
常规函数可以有一个或多个默认值,类的成员函数也如此。声明默认值的规则也相同。
class Rectangle
{
public:
Rectangle(int width, int height);
~Rectangle(){}
void drawShape();
void drawShape(int aWidth, int aHeight, bool useCurrentValue = false);
private:
int width;
int height;
};
3. 初始化对象
可以重载构造函数,但不能重载析构函数。析构函数签名总是这样:名称类名前加~,且不接受任何参数。
4.复制构造函数
除了提供默认构造函数和析构函数外,编译器还提供一个默认复制构造函数。每当创建对象的备份时,都将调用复制构造函数。
所有复制构造函数都接受一个参数:一个引用,它指向所属类的对象。最好讲该引用声明为常量,因为复制构造函数不用修改传入的对象,例如;
Tricycle(const Tricycle &trike);
默认的复制构造函数为成员复制(浅复制),不适用于指向堆中对象的指针这样的成员变量。