Effective C++ 第3版を読んでいたのですが、なかなか味わいのある本です。オススメです。
ただ、C++に語っているだけではなく、プログラミングについて考えさせられる内容になっています。
一度でもC++を齧ったことのある方には是非オススメしたい本です。
この本を読んでいて、こんなことができたのかーと知ったのが初期化リストです。
例えば以下のソース。
#include <iostream> class test { private: int a; int b; public: void message() { std::cout << "a = " << a << ", b = " << b << std::endl; } test() { a = 1; b = 2; } }; int main() { test* t = new test(); t->message(); return 0; }
のうちの
test() { a = 0; b = 0; }
のお話です。
C++にはC++11以降では、初期化リストというのがあり、これを用いて初期化するのが望ましいそうです。
#include <iostream> class test { private: int a; int b; public: void message() { std::cout << "a = " << a << ", b = " << b << std::endl; } test() { a = int(1); b = int(2); } }; int main() { test* t = new test(); t->message(); return 0; }
それだけでなく、こんな記法もできるようです。
#include <iostream> class test { private: int a; int b; public: void message() { std::cout << "a = " << a << ", b = " << b << std::endl; } test():a(4),b(5) { } }; int main() { test* t = new test(); t->message(); return 0; }
へー。