...
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-CPP-EX0: Constructors that do not use member initializers do not violate this rule.
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++PRQA QA-C++PRQA QA-C++4053 | | CertC++-OOP53 |
|
Clang | | -Wreorder |
cplusplus:Parasoft_V | | CERT_CPP-OOP53-a | List members in an initialization list in the order in which they are declared |
Polyspace Bug Finder | Include Page |
---|
| Polyspace Bug Finder_V |
---|
| Polyspace Bug Finder_V |
---|
|
| CERT C++: OOP53-CPP | Checks for members not initialized in canonical order (rule fully covered) |
RuleChecker | Include Page |
---|
| RuleChecker_V |
---|
| RuleChecker_V |
---|
|
| initializer-list-order
| Fully checked |
cplusplus:Parasoft_V | INIT-10 | | 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 |
...
...