码迷,mamicode.com
首页 > 其他好文 > 详细

HOUR 14 Calling Advanced Functions

时间:2018-03-21 11:32:12      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:use   UNC   int   aws   缺点   就会   cout   post   end   

默认参数

函数重载和默认参数函数会达到同样的效果。默认参数写起来简单,理解起来难。

默认构造参数有个缺点是,当参数不断增加的时候,理解起来会有点困难。

#include <QCoreApplication>
#include <iostream>

class Rectangle
{
public:
    Rectangle(int aWidth, int aHeight);
    ~Rectangle() {}
    void drawShape(int aWidth, int aHeight, bool useCurrentValue = false) const;
private:
    int width;
    int height;
};

Rectangle::Rectangle(int aWidth, int aHeight)
{
    width = aWidth;
    height = aHeight;
}

void Rectangle::drawShape(int aWidth, int aHeight, bool useCurrentValue) const
{
    int printWidth;
    int printHeight;

    if (useCurrentValue == false)
    {
        printHeight = aHeight;
        printWidth = aWidth;
    }
    else
    {
        printHeight = height;
        printWidth = width;
    }

    for(int i = 0; i < printHeight; i++)
    {
        for(int j = 0; j < printWidth; j++)
            std::cout << *;
        std::cout << std::endl;
    }

}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    Rectangle box(10, 2);

    box.drawShape(5, 5);

    box.drawShape(5, 5, true);

    return a.exec();
}

 

构造函数重载:构造函数的创建分为两个阶段

  1. 初始化阶段
  2. 函数体阶段
Tricycle::Tricycle() :
    speed(5),
    wheelSize(12)
{
    //other statements
}

构造函数后面的冒号表示要开始初始化了, 函数体完成其他的赋值操作。

常量变量和引用必须在初始化的时候给定值,所以类内的引用、const等必须用这种技术

Copy Constructor

编译器会自动创建复制构造函数,每次发生复制时候调用。

当向一个类中传值的时候,就会调用复制构造函数创建一个临时复制的对象。

复制构造函数只接受一个参数——指向同一类对象的引用,由于复制不会改变传入的对象,所以最好定义为const类型的,例如

Tricycle(const Tricycle &trike);

 

HOUR 14 Calling Advanced Functions

标签:use   UNC   int   aws   缺点   就会   cout   post   end   

原文地址:https://www.cnblogs.com/a-cock/p/8615267.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!