类的定义:
#ifndef ARRAY1_H
#define ARRAY1_H
#include <iostream.h>
class array{ 
   friend ostream &operator<<(ostream &,const array &);
   friend istream &operator>>(istream &,array &);
 public:
   array (int=10);
   array (const array &);
   ~array();
   int getsize() const;
   const array &operator=(const array &);
   bool operator==(const array &) const;
   bool operator!=(const array &right) const
    { return ! (*this==right);}
   int &operator[](int);
   const int &operator[](int) const;
   static int getarraycount();
 private:
     int size;
 int *ptr;
 static int arraycount;
};
#endif
其中一个构造函数的实现:
array::array(const array &init) :size(init.size)

  ptr=new int[size];
  assert(ptr!=0);
  ++arraycount;
  for (int i=0;i<size;i++)
  ptr[i]=init.ptr[i];
 }
我不知道 :size(init.size) 干什么的,怎么回事?? 

解决方案 »

  1.   

    用 init.size 初始化size值啊,
      

  2.   

    这是一个拷贝构造函数。
    size(init.size)是初始化数组的大小和init参数的大小一致。
      

  3.   

    用init的 size 初始化 size
      

  4.   

    为什么不在程序中size= init.size 
    呢??
    size(init.size) 的用法我看的书以前没用过,突然用出来,所以我茫然
      

  5.   

    构造函数的一种特殊的初始化方式,保证在构造函数执行前,某些变量已经正确的初始化了。:size(init.size) 表示 size = init.size;
      

  6.   

    这是构造函数的成员初始化列表,比如:
    class A{ A(); A(int i);};
    class B public A { B(int i);};
    B(int i) : A(i) {...};
    的意思就是B(int i) { A(i);... };
      

  7.   

    这是Contructor Initializer List;是一种初始化的方式.array::array(const array &init) :size(init.size)
    {
      ...
    };其实在这里相当于
    array::array(const array &init)
    {
      size = init.size;
      ... 
    };当然,函数内赋值和Contructor Initializer List是有区别的,比如Const 成员变量只能用Contructor Initializer List;
      

  8.   

    :size(init.size)冒号后的内容叫  初始化表