其实冒号后的内容是初始化成员列表,一般有三种情况:
1、对含有对象成员的对象进行初始化,例如,
类 line 有两个私有对象成员 startpoint、endpoint,line 的构造函数写成:
line(int sx,int sy,int ex,int ey):startpoint(sx,sy),endpoint(ex,ey){……}
初始化时按照类定义中对象成员的顺序分别调用各自对象的构造函数,再执行自己的构造函数
2、对于不含对象成员的对象,初始化时也可以套用上面的格式,例如,
类 rectangle 有两个数据成员 length、width, 其构造函数写成:
rectangle():length(1),width(2){}
rectangle(int x,int y):length(x),width(y){}
例子3
class Line:public Point
{
public:
Line(float a, float b, float c, float d): x1(a), y1(b), x2(c), y2(b){};//构造函数
virtual double perimeter() const {return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));};
//定义虚函数
protected:
float x1, y1, x2, y2; //定义端点坐标
};
来自 <https://blog.youkuaiyun.com/mydriverc2/article/details/9331751>