2017-04-18 11 views
-4

Line().setLength(6.0);Line line; line.setLength(6.0); でオブジェクトを作成する方法とは何か違うのですか?結果を同じにしたらどうなりますか?変数のインスタンスを作成すると、何が違うのですか?

#include <iostream> 

using namespace std; 

class Line { 
    public: 
     void setLength(double len); 
     double getLength(void); 
     Line(); // This is the constructor declaration 
     ~Line(); // This is the destructor: declaration 

    private: 
     double length; 
}; 

// Member functions definitions including constructor 
Line::Line(void) { 
    cout << "Object is being created" << endl; 
} 

Line::~Line(void) { 
    cout << "Object is being deleted" << endl; 
} 

void Line::setLength(double len) { 
    length = len; 
} 

double Line::getLength(void) { 
    return length; 
} 

// Main function for the program 
int main() { 
    Line().setLength(6.0); 

    Line line; 
    line.setLength(6.0); 
    return 0; 
} 
+1

Line()。setLength(6.0);から作られた 'Line'はどうしますか?* – NathanOliver

答えて

0

結果は常に同じにする必要があります。しかし、Line().setLength(6.0);は、将来の行のプロパティを変更できないことを意味しますが、Line line; line.setLength(6.0);を使用すると、変数lineにアクセスすることができ、行のプロパティを変更できます。

+1

結果は常に同じでなければなりません。 case - オブジェクトは、文が実行されるとすぐに破棄されます。しかし、2番目のケースでは、宣言されたオブジェクトは、実行フローが宣言されたスコープから離れるとすぐに破棄されます。 –

+0

こんにちはすべてありがとう – Chid

関連する問題