类的定义:
#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) 干什么的,怎么回事??
#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) 干什么的,怎么回事??
size(init.size)是初始化数组的大小和init参数的大小一致。
呢??
size(init.size) 的用法我看的书以前没用过,突然用出来,所以我茫然
class A{ A(); A(int i);};
class B public A { B(int i);};
B(int i) : A(i) {...};
的意思就是B(int i) { A(i);... };
{
...
};其实在这里相当于
array::array(const array &init)
{
size = init.size;
...
};当然,函数内赋值和Contructor Initializer List是有区别的,比如Const 成员变量只能用Contructor Initializer List;