Add section on non-static data member initializers

Since C++11, N2756 specifies that you can initialize a non-static member on its declaration.
This commit is contained in:
Tulio Leao
2017-04-08 15:40:22 -03:00
committed by GitHub
parent 80005e1e9b
commit df931dfff4

View File

@@ -64,6 +64,7 @@ C++11 includes the following new language features:
- [converting constructors](#converting-constructors)
- [explicit conversion functions](#explicit-conversion-functions)
- [inline-namespaces](#inline-namespaces)
- [non-static data member initializers](#non-static-data-member-initializers)
C++11 includes the following new library features:
- [std::move](#stdmove)
@@ -1015,6 +1016,23 @@ int oldVersion {Program::Version1::getVersion()}; // Uses getVersion() from Vers
bool firstVersion {Program::isFirstVersion()}; // Does not compile when Version2 is added
```
### Non-static data member initializers
Allows non-static data members to be initialized where they are declared, potentially cleaning up constructors of default initializations.
```c++
// Default initialization prior to C++11
class Human {
Human() : age(0) {}
private:
unsigned age;
};
// Default initialization on C++11
class Human {
private:
unsigned age = 0;
};
```
## C++11 Library Features
### std::move