Heim > Backend-Entwicklung > C++ > Wie lange leben temporäre Objekte in C-Ausdrücken?

Wie lange leben temporäre Objekte in C-Ausdrücken?

Patricia Arquette
Freigeben: 2024-12-26 05:36:31
Original
814 Leute haben es durchsucht

How Long Do Temporary Objects Live in C   Expressions?

Lebensdauer temporärer Objekte in C

In C werden temporäre Objekte erstellt, wenn Ausdrücke ausgewertet werden. Der Verweis auf ein temporäres Objekt ist bis zum Ende seines vollständigen Ausdrucks gültig. Dies ist der äußerste Ausdruck, bei dem das temporäre Objekt nicht Teil eines anderen Ausdrucks ist. Dadurch können temporäre Objekte als Argumente in Funktionsaufrufen verwendet und von Funktionen zurückgegeben werden.

Betrachten Sie das folgende Beispiel:

class StringBuffer
{
public:
    StringBuffer(std::string & str) : m_str(str)
    {
        m_buffer.push_back(0);
    }
    ~StringBuffer()
    {
        m_str = &m_buffer[0];
    }
    char * Size(int maxlength)
    {
        m_buffer.resize(maxlength + 1, 0);
        return &m_buffer[0];
    }

private:
    std::string & m_str;
    std::vector<char> m_buffer;
};

void GetString(char * str, int maxlength);

std::string mystring;
GetString(StringBuffer(mystring).Size(MAXLEN), MAXLEN);
Nach dem Login kopieren

In diesem Beispiel wird ein temporäres StringBuffer-Objekt erstellt und seine Größe festgelegt ()-Methode wird aufgerufen, um einen Zeiger auf einen Puffer zu erhalten. Dieser Zeiger wird dann an die Funktion GetString() übergeben.

Die Lebensdauer des temporären StringBuffer-Objekts ist bis zum Ende des vollständigen Ausdrucks, dem Aufruf von GetString(), garantiert. Daher wird der Destruktor für das temporäre Objekt aufgerufen, nachdem GetString() zurückgegeben wurde. Dieses Verhalten ist unabhängig vom verwendeten Compiler konsistent.

Diese garantierte Lebensdauer ist entscheidend für Ausdrucksvorlagen, die auf der Tatsache beruhen, dass temporäre Objekte bis zum Ende des Ausdrucks, in dem sie erstellt werden, gültig bleiben.

Das obige ist der detaillierte Inhalt vonWie lange leben temporäre Objekte in C-Ausdrücken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage