...
| 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
Remediation Cost| Detectable | Repairable | Priority | Level | 
|---|
| OOP53-CPP | Medium | Unlikely | Yes | 
Medium P4  L3  Automated Detection
| Tool | Version | Checker | Description | 
|---|
PRQA QA-C++PRQA QA-C++PRQA QA-C++4053 | |  | CertC++-OOP53 | 
 | 
| Clang |  | -Wreorder | 
 cplusplus:cplusplus:Parasoft_V | INIT-10 | |  | 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 | 
  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 | 
...
...
  
    
   