2017-04-18 3 views
-4

Ich habe mich gefragt, was der andere ist ein Objekt mit Line().setLength(6.0); und Line line; line.setLength(6.0); Nach dem Kompilieren des Ergebnis der gleichen oder nicht zwischen dem Erstellen werden würde?Was ist beim Erstellen einer Instanz einer Variablen anders?

#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

Fragen Sie sich, * wie werde ich jemals die 'Line' aus' Line() verwenden. SetLength (6.0); '? * – NathanOliver

Antwort

0

Das Ergebnis sollte immer das gleiche sein. Line().setLength(6.0); bedeutet jedoch, dass Sie die Eigenschaften der Linie in Zukunft nicht ändern können, während Sie mit Line line; line.setLength(6.0); auf die Variable line zugreifen können und daher die Eigenschaften der Linie ändern können.

+1

_Das Ergebnis sollte immer das gleiche sein._ Nun, es gibt einen Unterschied: Im 1. case - Objekt wird zerstört, sobald die Anweisung ausgeführt wird. Im zweiten Fall wird das deklarierte Objekt jedoch zerstört, sobald der Ausführungsablauf den Gültigkeitsbereich verlässt, in dem es deklariert ist. –

+0

Hallo zusammen Vielen Dank – Chid

Verwandte Themen