zoukankan      html  css  js  c++  java
  • 类Class(三):构造函数重载(Overloading constructors)

    像其它函数一样,构造函数也可以重载,有相同的名字但有不同的参数:不同的参数个数或参数类型。编译器会根据参数自动匹配相应的函数,例如:

    #include <iostream>
    using namespace std;
    
    class Rectangle {
        int width, height;
      public:
        Rectangle ();
        Rectangle (int, int);
        int area (void) {return (width*height);}
    };
    
    Rectangle::Rectangle () {
      width = 5;
      height = 5;
    }
    
    Rectangle::Rectangle (int a, int b) {
      width = a;
      height = b;
    }
    
    int main () {
      Rectangle rect (3,4);
      Rectangle rectb;
      cout << "rect area: " << rect.area() << endl;
      cout << "rectb area: " << rectb.area() << endl;
      return 0;
    }
    rect area: 12
    rectb area: 25

    上面的例子中,构造了类 Rectangle 的两个对象 :rect 和 rectb。其中 rect 有两个参数,和之前举得例子一样。

    这个例子也引进了一个特殊种类的构造函数:默认构造函数(default constructor)。默认构造函数是没有参数的,它之所以特殊,是因为 只要有一个对象被声明时(且这个对象不需要用任何参数初始化),那么就会立刻调用 默认构造函数。上面的例子中,rectb 被声明时就会调用默认构造函数。

    注意:声明 rectb 时如不想传入参数,则后面没有双括号(),如果写上,则不能调用 默认构造函数:

        Rectangle rectb;//OK,default constructor called

        Rectangle rectb();//oops,default costructor NOT called

    这是因为,空括号()会使得 rectb 变为一个函数而不是一个对象。此时,rectb 成为了一个没有参数,返回值类型为 Rectangle 的一个函数。



  • 相关阅读:
    Java中ArrayList和LinkedList区别
    poi操作excel之: 将NUMERIC转换成TEXT
    Spring事务异常回滚,捕获异常不抛出就不会回滚
    CollectionUtils.select用法
    名词解释
    jenkins
    代码测试文章推荐
    redis 参考文章
    zookeeper,dubbo,dubbo admin
    Navicat For Mysql快捷键
  • 原文地址:https://www.cnblogs.com/guozqzzu/p/3629683.html
Copyright © 2011-2022 走看看