Merge #12896: docs: Fix conflicting statements about initialization in developer notes

b119e78 docs: Fix conflicting statements about initialization in developer notes (practicalswift)

Pull request description:

  Fix conflicting statements about initialization in developer notes.

  Context: https://github.com/bitcoin/bitcoin/pull/12785#issuecomment-378941151

Tree-SHA512: 601b18cbeb963f99a4180e652d6c1b78210df89743fd3565c0bce95fd2dcc9784b6af212795a43d3a40a5858b1a03e0d2c7982295c92d6ea710db0e6ee69f0b4
This commit is contained in:
Wladimir J. van der Laan 2018-04-07 16:42:22 +02:00
commit b15485ecca
No known key found for this signature in database
GPG Key ID: 1E4AED62986CD25D
1 changed files with 12 additions and 15 deletions

View File

@ -450,12 +450,21 @@ C++ data structures
- Vector bounds checking is only enabled in debug mode. Do not rely on it - Vector bounds checking is only enabled in debug mode. Do not rely on it
- Make sure that constructors initialize all fields. If this is skipped for a - Initialize all non-static class members where they are defined.
good reason (i.e., optimization on the critical path), add an explicit If this is skipped for a good reason (i.e., optimization on the critical
comment about this path), add an explicit comment about this
- *Rationale*: Ensure determinism by avoiding accidental use of uninitialized - *Rationale*: Ensure determinism by avoiding accidental use of uninitialized
values. Also, static analyzers balk about this. values. Also, static analyzers balk about this.
Initializing the members in the declaration makes it easy to
spot uninitialized ones.
```cpp
class A
{
uint32_t m_count{0};
}
```
- By default, declare single-argument constructors `explicit`. - By default, declare single-argument constructors `explicit`.
@ -474,18 +483,6 @@ C++ data structures
- *Rationale*: Easier to understand what is happening, thus easier to spot mistakes, even for those - *Rationale*: Easier to understand what is happening, thus easier to spot mistakes, even for those
that are not language lawyers that are not language lawyers
- Initialize all non-static class members where they are defined
- *Rationale*: Initializing the members in the declaration makes it easy to spot uninitialized ones,
and avoids accidentally reading uninitialized memory
```cpp
class A
{
uint32_t m_count{0};
}
```
Strings and formatting Strings and formatting
------------------------ ------------------------