没有主体或成员初始化的类构造函数?

时间:2017-11-16 23:48:48

标签: c++ c++11

通过 C ++编程语言,第4版阅读,继承自Circle的课程Shape是这样的

class Circle : public Shape {
public:
    Circle(Point p, int rr); // constructor
    Point center() const { return x; }

    void move(Point to) { x=to; }
    void draw() const;
    void rotate(int) {} // nice simple algorithm
private:
    Point x; // center
    int r; // radius
};

Shape

class Shape {
public:
    virtual Point center() const =0; // pure virtual
    virtual void move(Point to) =0;

    virtual void draw() const = 0; // draw on current "Canvas"
    virtual void rotate(int angle) = 0;

    virtual ˜Shape() {} // destructor
// ...
};

令我困惑的部分是Circle的构造函数:

Circle(Point p, int rr);

返回类型在哪里?在以前的所有构造函数中,返回类型都指定为void。我找不到C ++隐式返回类型(比如C&#39的隐式int规则)

身体/初始化在哪里?所有先前的构造函数通过成员列表初始化(:)或在函数体{}中初始化。我在这里看不到,所以我想知道这些值是如何初始化的。

1 个答案:

答案 0 :(得分:3)

构造函数不指定返回类型,也不返回任何内容。

它没有正文,因为它只是声明 - 定义将在其他地方,并且看起来像

Circle::Circle (Point p, int rr)
{
 ...
}