docs: Fix conflicting statements about initialization in developer notes

This commit is contained in:
practicalswift 2018-04-05 23:03:26 +02:00
parent 5f0c6a7b0e
commit b119e78733
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
- Make sure that constructors initialize all fields. If this is skipped for a
good reason (i.e., optimization on the critical path), add an explicit
comment about this
- Initialize all non-static class members where they are defined.
If this is skipped for a good reason (i.e., optimization on the critical
path), add an explicit comment about this
- *Rationale*: Ensure determinism by avoiding accidental use of uninitialized
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`.
@ -474,18 +483,6 @@ C++ data structures
- *Rationale*: Easier to understand what is happening, thus easier to spot mistakes, even for those
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
------------------------