2017-11-16 1 views
-1

は、私がCircleのコンストラクタで混乱しそうボディまたはメンバーの初期化をしないクラスコンストラクタ? <em>C++プログラミング言語、第4版</em>を通じて読む

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から継承するクラスCircleShapeクラス

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(Point p, int rr);

戻り値の型はどこですか?以前のすべてのコンストラクタで戻り値の型はvoidと指定されました。私はC++の暗黙的な戻り型(Cの暗黙のint規則のような)を見つけることができませんでした

ボディ/初期化はどこですか?以前のすべてのコンストラクタは、メンバリスト初期化(:)または関数本体{}で初期化されています。私はここでどちらも見ていないので、値がどのように初期化されているか不思議です。

+0

おっと、申し訳ありませんようになります。ヒューマンエラー。彼らの古い例を誓ったことはありましたか?それを混ぜなければならない... –

答えて

3

コンストラクターは戻り値の型を指定せず、何も返しません。

そして、それが唯一の宣言ですので、それはボディを持っていません - 定義は、どこか別の場所になり、

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

ありがとう。これは意味があり、考慮しなかったことは宣言であった可能性があるということです。 –

関連する問題