2018-01-24 高级函数

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);

默认的复制构造函数为成员复制(浅复制),不适用于指向堆中对象的指针这样的成员变量。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容