JUMP STATEMENT FLOW:
break ──> Exits innermost loop/switch immediately.
continue ──> Jumps to loop conditional evaluation or increment step.
return ──> Destructs local stack objects in reverse order -> Returns to caller.
goto ──> Transfers control to local label (cannot bypass non-trivial constructors). Topic 17 of 91 3. Control Flow in C++ Interactive Tutorial
Jump Statements in C++: break, continue, goto, and return
On This Page0 sectionsQuick jump to subtopic
Direct Answer & Core Concept
Jump statements in C++ unconditionally transfer execution to another location: break (terminates enclosing loop or switch), continue (skips to next loop iteration), return (exits function returning an optional value), and goto (jumps to a labeled statement within the same function). When jumping out of scopes, C++ guarantees that all automatic local objects in the exited scopes are cleanly destructed in reverse order of construction.
Detailed Explanation & Mechanics
1. Jump Statement Mechanics & RAII Safety:
Architecture Diagram
2. Restrictions on `goto`:
C++ prohibits goto from jumping over variable declarations with non-trivial initializations unless enclosed in a block.
Runnable Code Example: Jump Statements in C++
C++20 / C++23main.cpp
#include <iostream>
struct ResourceTracker {
std::string name;
ResourceTracker(std::string n) : name(n) { std::cout << " Constructed: " << name << "
"; }
~ResourceTracker() { std::cout << " Destructed: " << name << "
"; }
};
int searchNumber(int target) {
ResourceTracker tracker("SearchScope");
for (int i = 1; i <= 5; ++i) {
if (i == target) {
std::cout << "Target found! Returning from function.
";
return i; // Automatically destructs 'tracker' before returning
}
}
return -1;
}
int main() {
std::cout << "Starting search...
";
int result = searchNumber(3);
std::cout << "Search result: " << result << "
";
return 0;
}Common C++ Technical Interview Questions & Answers
Interview PrepQ
Q: Does return safely invoke destructors of stack variables?
A: Yes. ISO C++ guarantees deterministic stack unwinding: before control exits the function, all local automatic objects are destroyed in reverse order of their creation.
Q
Q: When is goto acceptable in modern C++?
A: In modern C++, `goto` is rarely needed due to exceptions, break/continue, and structured programming. Occasionally, it is used in low-level state machines or breaking out of deeply nested multi-level loops.
Key Takeaways, Modern Best Practices & Idioms
C++ Best Practices & Production Rules
1. Rely on structured control flow instead of
2. Ensure every non-void function path explicitly returns a valid value.
3. Leverage early returns (guard clauses) to simplify deep conditional nesting.
goto.2. Ensure every non-void function path explicitly returns a valid value.
3. Leverage early returns (guard clauses) to simplify deep conditional nesting.