学学习网 手机版

学学习网

学习路径: 学习首页 > 应用开发 > c++ >

第六节 类(Classes)(4)

设置字体:
----------------------------------

当然,如果你也可以重载class的构造函数,定义有不同的参数或完全没有参数的构造函数,见如下例子:
    // overloading class constructors
    #include <iostream.h>
   
    Class CRectangle {
        int width, height;
      public:
        CRectangle ();
        CRectangle (int,int);
        int area (void) {return (width*height);}
    };
   
    CRectangle::CRectangle () {
        width = 5;
        height = 5;
    }
   
    CRectangle::CRectangle (int a, int b) {
        width = a;
        height = b;
    }
   
    int main () {
        CRectangle rect (3,4);
        CRectangle rectb;
        cout << "rect area: " << rect.area() << endl;
        cout << "rectb area: " << rectb.area() << endl;
    }
                      
rect area: 12
rectb area: 25
在上面的例子中,rectb 被声明的时候没有参数,所以它被使用没有参数的构造函数进行初始化,也就是width 和height 都被赋值为5。
注意在我们声明一个新的object的时候,如果不想传入参数,则不需要写括号():
CRectangle rectb; // right
CRectangle rectb(); // wrong!
类的指针(Pointers to classes)
类也是可以有指针的,要定义类的指针,我们只需要认识到,类一旦被定义就成为一种有效的数据类型,因此只需要用类的名字作为指针的名字就可以了。例如:
CRectangle * prect;
是一个指向class CRectangle类型的对象的指针。
就像数据机构中的情况一样,要想直接引用一个由指针指向的对象(object)中的成员,需要使用操作符 ->。这里是一个例子,显示了几种可能出现的情况:
    // pointer to classes example
    #include <iostream.h>
   
    class CRectangle {
        int width, height;
      public:
        void set_values (int, int);
        int area (void) {return (width * height);}
    };
   
    void CRectangle::set_values (int a, int b) {
        width = a;
        height = b;
    }
   
    int main () {
        CRectangle a, *b, *c;
        CRectangle * d = new CRectangle[2];
        b= new CRectangle;
        c= &a;
        a.set_values (1,2);
        b->set_values (3,4);
        d->set_values (5,6);
        d[1].set_values (7,8);
        cout << "a area: " << a.area() << endl;
        cout << "*b area: " << b->area() << endl;
        cout << "*c area: " << c->area() << endl;
        cout << "d[0] area: " << d[0].area() << endl;
        cout << "d[1] area: " << d[1].area() << endl;
        return 0;
    }
                      
a area: 2
*b area: 12
*c area: 2
d[0] area: 30
d[1] area: 56
以下是怎样读前面例子中出现的一些指针和类操作符 (*, &, ., ->, [ ]):
----------------------------------
课程列表
重点难点
赞助链接