From df931dfff4f835e2a3732aba17857db292d34e37 Mon Sep 17 00:00:00 2001 From: Tulio Leao Date: Sat, 8 Apr 2017 15:40:22 -0300 Subject: [PATCH] Add section on non-static data member initializers Since C++11, N2756 specifies that you can initialize a non-static member on its declaration. --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index c1a4b90..28650b1 100644 --- a/README.md +++ b/README.md @@ -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