...
| Code Block |
|---|
|
class S {
int v;
public:
S() : v(12) {} // Non-trivial constructor
void f();
};
void f() {
// ...
goto bad_idea;
// ...
S s; // Control passes over the declaration, so initialization does not take place.
bad_idea: s.f();
} |
Compliant Solution
This compliant solution ensures that s is properly initialized prior to performing the local jump.
| Code Block |
|---|
|
class S {
int v;
public:
S() : v(12) {} // Non-trivial constructor
void f();
};
void f() {
S s;
// ...
goto bad_idea;
// ...
bad_idea: s.f();
} |
Noncompliant Code Example
...