C++ Quiz37 of 173
Difficulty:
⬅️ Prev: 52Quiz ID: 105Next: 106 ➡️

According to the C++23 standard, what is the output of this program?

#include <iostream>

class A {
public:
  A() { std::cout << "a"; }
  ~A() { std::cout << "A"; }
};

int i = 1;

int main() {
label:
  A a;
  if (i--)
    goto label;
}
Hint

Control passes through A a; twice. Does it make more sense to construct a both times, or just the first? Should the destructor be called the same number of times as the constructor?

Reveal answer

aAaA

Explanation

The standard says this about jump statements in §[stmt.jump.general]¶note-1:

On exit from a scope (however accomplished), objects with automatic storage duration that have been constructed in that scope are destroyed in the reverse order of their construction.

⬅️ Prev: 52Quiz ID: 105Next: 106 ➡️