#topicpath ////////////////////////////////////////////////////////////////////////////// * 目次 [#e158d013] #contents(); ////////////////////////////////////////////////////////////////////////////// * 下位ページ [#r5d24f18] #ls2(Lang/C++/); ////////////////////////////////////////////////////////////////////////////// * C++ のキーワード [#u4a91d35] - TR1 - スマートポインタ - [[Boost>http://www.boost.org/]] -- [[Boost C++ Libraries>http://boost.cppll.jp/HEAD/]] -- [[Let's boost>http://www.kmonos.net/alang/boost/]] ////////////////////////////////////////////////////////////////////////////// * プリプロセッサ [#k54e3482] ** #error <error-message> [#u2b926b8] - プリプロセッサ実行時、そこを通ると<error-message>を出力して処理を停止する。 - 書式: #error "error-message" ////////////////////////////////////////////////////////////////////////////// * 初期化 [#xe60f555] - コンストラクタでの初期値代入ではなく、「初期値で生成」する。 class CTest { public: CTest(); ~CTest(); ・・・ private: CInfo m_info; int m_id; }; CTest::CTest() :CInfo( 0 ), // 初期値で生成するため、メンバ変数のコンストラクタをここで呼ぶ m_id( 0 ) { // メンバ変数への初期値代入をここに記述しない } //////////////////////////////////////////////////////////////////////////////// * 継承される可能性のあるclassは、デストラクタを仮想にする [#fc01395d] - これは下記のような問題を回避する為。 ++ 継承した子クラスを作る ++ その子クラスが、親クラスの型で自分のインスタンスのポインタを返すような使い方をされる場合がある。 ++ このとき、その親クラスのポインタに対して delete をしてしまうと、子クラスの部分だけがdeleteされていない、中抜けのおかしな実体になってしまう。 ++ その中抜けなインスタンスに対してアクセスすると、そのときの動作が未定義になってしまう。 ////////////////////////////////////////////////////////////////////////////// * 型の別名宣言 using [#kbf8ccce] //============================================================================ ** 型を別名宣言する場合 [#q46e5948] - 従来は typedef で型の別名宣言が出来たが、C++ においては、 using で行う方法もある typedef <元の型名> <新しい型名>; // 従来の宣言形式 using <新しい型名> = <元の型名>; // using を使用した宣言 //============================================================================ ** 関数ポインタに対して宣言する場合 [#gd03dcaf] typedef void (*funcptr)(int); // typedef を使用する場合 using funcptr = void (*)(int); // using を使用する場合 - see also: [[std::function>Lang/C++/C++11#std-function]] ////////////////////////////////////////////////////////////////////////////// * gcc / g++ [#f33f7483] - gcc (g++) で std ライブラリを使用したコードを make する際、libstdc++.a が必要になる LDFLAGS += -lstdc++