ssacontents

C++の「使ったら負け」シリーズ

超初級編

最低レベルの警告メッセージ・もしくは抑止機能

ほとんどの環境で、ビルドオプションに「警告レベル」という設定があります。
これは、何も考えずに最大レベルにするのが正解。

最低レベル、もしくは警告なしの設定にしてはいけません。それは、丸裸で戦場に行くようなものです。

初級編

#defineによるマクロ定義

言うまでもありませんが、#defineによるマクロは強力すぎて、バグの温床であり、デバッグを困難にする要因です。できるかぎり使わないに越したことはありません。
正当な理由なく#defineマクロを使ってしまったら、あなたの「負け」です。

Cスタイルのキャスト

ヘッダファイルでの using namespace

グローバル変数 (デバッグ用途以外で)

マジックナンバー

中級編

クラスのfriend宣言

フレンドを使うのは非常に限定的。ほとんどの場合は使う事で何らかのトレードオフがあると考えた方がよい。

  • フレンドを有効に使う数少ない例
  1. CRTPの親クラスからプライベードのコンストラクタにアクセスさせる。(シングルトン実装など)
 class Hoge : public ts::singleton_policy<Hoge> {
   friend struct ts::singleton_policy<Hoge>;
   Hoge();
 public:

クラスの前方宣言

void*

NULLなどCライブラリ由来のマクロ定数

union

#ifdef #if defined() 等による条件コンパイル

上級編

reinterpret_cast

ヌルポインタチェック

switch文

生delete文

マネージャーという名前を含むクラス名

最上級編

virtual


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-03-18 (水) 14:05:55 (1494d)