...
| Code Block | ||||
|---|---|---|---|---|
| ||||
class B1 {
int val;
public:
B1(int val) : val(val) {}
};
class B2 {
int otherVal;
public:
B2(int otherVal) : otherVal(otherVal) {}
};
class D : B1, B2 {
public:
D(int a) : B1(a), B2(a) {}
}; |
Exceptions
OOP53-EX1: Constructors that do not use member initializers do not violate this rule.Anchor OOP53-EX1 OOP53-EX1
Risk Assessment
Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
|---|---|---|---|---|---|
OOP53-CPP | Medium | Unlikely | Medium | P4 | L3 |
Automated Detection
Tool | Version | Checker | Description | |||||
|---|---|---|---|---|---|---|---|---|
| PRQA QA-C++ |
| 4053 |
| Clang |
| -Wreorder |
| LDRA tool suite |
| 206 S | Fully implemented | ||||||
| Parasoft C/C++test |
|
|
| INIT-10 |
| SonarQube C/C++ Plugin |
| S3229 |
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Bibliography
| [ISO/IEC 14882-2014] | Subclause 12.6.2, "Initializing Bases and Members" |
| [Lockheed Martin 2005] | AV Rule 75, Members of the initialization list shall be listed in the order in which they are declared in the class |
...
...