
項目 17:自動的に生成される特殊メンバ関数を理解する
|
107
正誤表より補足
(訂正)std::mutex も std::atomic もムーブ専用型ではありません。コピー可能で
もムーブ可能でもありません。そのため、std::mutex、std::atomic を持つクラス
はコピーもムーブもできません。
重要ポイント
•
並行実行はあり得ないことが確実でもない限り、const メンバ関数はスレッドセーフにする。
•
std::atomic 変数を用いれば mutex よりも性能を改善できる可能性がある。しかし、適し
ているのは単独の変数やメモリ領域を操作する場合のみである。
項目 17:自動的に生成される特殊メンバ関数を理解する
C++ の正式用語で特殊メンバ関数(special member function)とは、C++ が自ら生成するメンバ
関数を意味します。C++98 には特殊メンバ関数が 4 つあります。ディフォルトコンストラクタ、デ
ストラクタ、コピーコンストラクタ、コピー代入演算子です。もちろん生成される条件があり、クラ
スが上記関数を明示的に宣言していないけれど、コードでは使用している場合です。ディフォルト
コンストラクタが生成されるのは、クラスがコンストラクタを 1 つも宣言していない場合です(コ
ンストラクタには実引数が必須と指定すると、コンパイラはディフォルトコンストラクタを生成し
ない)。生成された特殊メンバ関数は暗黙に public かつ inline になり、 また、仮想デストラクタ ...