タグ

c++に関するsyaianのブックマーク (13)

  • クラスの operator を定義するとき、戻り値の型はどうすべきか

    クラスの operator を定義するとき、戻り値の型はどうすべきかのまとめ。 全体まとめ 代入演算(「=」) 和差積商(「+」「-」「*」「/」) 自身に対する和差積商(「+=」「-=」「*=」「/=」) 比較演算(「==」「!=」「<」「>」) 配列アクセス(「[ ]」) 実装例 参考 サンプルクラス 以下のクラスに、 operator を定義するとします。 class CPoint3d { public: double x, y, z; CPoint3d(double a = 0, double b = 0, double c = 0) : x(a), y(b), z(c) {} }; 全体まとめ 演算の連鎖ができるように、戻り値の型を void ではなく、ユーザー定義型にする。 自身を返す関数は、戻り値の型を、非const参照にする。 ユーザー定義型の一時オブジェクトを返す関数は、

    syaian
    syaian 2016/11/10
  • ゲームプログラマーを目指すひと タスクシステムでゲームを製作して気づいた事

    前まで、下記のようにしてゲームを製作してたんですが、 ~基底となるクラスの定義~ (純粋仮想関数を定義。) class CCharaBase{ //略 }; ~各クラスを定義~ class CPlayer : public CCharaBase{ //略 }; class CEnemy : public CCharaBase{ //略 }; ~ゲームのメインの部分~ void GameMain(){ m_Player->Move(); m_Enemy->Move(); m_Player->Draw(); m_Enemy->Draw(); } とても固定されたプログラムになってました。 (描画の順番変更できない。 というか、クラスが増えたらGameMainがとても冗長な事になる。) 【冗長になっている例】 m_Player->Move(); m_Enemy->Move(); m_Boss->

  • https://qiita.com/Serbonis/items/9ddf6200f8e63a7bb1d4

  • https://qiita.com/Serbonis/items/33985b6df5582846f2cf

  • キャスト | プログラマーズ雑記帳

    syaian
    syaian 2015/05/24
  • Story of Your Life » Blog Archive » constとメモリ構造の関係性

    今日は会社でコードレビュー(僕が書いたコードではない)があったのだが、その中であった指摘にconstを使うと読み出し専用領域に置かれるけど別にconstつけずにスタックに置いてもいいんじゃないか?という話があった。 ちなみにコードは下記のような感じ。 #include <iostream> #include <cstring> class string_container { char *str; public: string_container(const char *arg){ str = strdup(arg); } ~string_container(){ delete str; } operator const char* (){ return str; } }; int main(void){ string_container obj("test"); // この下の行が焦点

    syaian
    syaian 2015/05/24
  • FAQ形式でデストラクタにvirtualを付ける理由をまとめてみた - かせいさんとこ

    Q1: デストラクタにvirtualをつけろとよく言われるけど、なんで? 挙動が未定義のdeleteを呼び出す可能性があるから Q2: 挙動が未定義だと駄目なの? 超駄目。何が起きても文句は言えない Q3: どんな時に挙動が未定義のdeleteが呼び出されるの? こんなとき // NoVirtualBaseClass : デストラクタにvirtualを持たない // NoVirtualSuperClass : NoVirtualBaseClassを継承 NoVirtualBaseClass * ptr = new NoVirtualSuperClass(); // 挙動が未定義 delete ptr; Q4: 何でそうなるの? delete時点で、ptrは自分がNoVirtualBaseClassのインスタンスだと思ってるから Q5: 何で?NoVirtualSuperClassでnewし

    FAQ形式でデストラクタにvirtualを付ける理由をまとめてみた - かせいさんとこ
    syaian
    syaian 2012/11/13
  • POINTER「配列とポインタの完全制覇」「C言語 ポインタ完全制覇」

    タイトルは「C言語 ポインタ完全制覇」。 このページの書籍化とはいえ、内容の大半は書き下ろしですので、 既にWebで読んでおられる方にも決して損はさせません。 詳細はこちらへどうぞ。 「C言語 ポインタ完全制覇(第2版)」書籍情報 「C言語 ポインタ完全制覇」書籍情報(旧版) 技術評論社さんによる書籍案内はこちら。 第2版 旧版 修正履歴は、このページの末尾にあります このページについて 全くもって僭越ながら、恐れおおくも偉そうにも、 こんな文書をWWWで公開させていただくことにしました。 この文書は、もともと社内向けの教科書として作成したものです。 私は、一介の文系出身プログラマであり、 特に情報関係の教育を受けたわけでもなく、 プログラミング言語に深い造詣を持っているわけではありません。 この文書にも多くの誤りや、誤解を招く表現があるかと思います。 そのような記述を見付けられた方は、ぜ

    syaian
    syaian 2012/08/13
  • C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう

    C++0xの概要はこちら ・Angle bracket テンプレートの連続した山カッコの問題の解決 ・初期化子リスト ユーザー定義のクラスで配列のような初期化構文を実装可能になる ・Uniform initialization コンストラクタの構文と初期化子リストの構文が一様になる ・デリゲーティング・コンストラクタ コンストラクタから他のコンストラクタを呼び出せる ・auto 型推論 ・記憶クラス指定子としての auto の削除 autoキーワードの意味が変更になるため、下位互換がなくなる ・decltype sizeofの型版 ・Template Aliases テンプレートを使用して型の別名を付けることができる。いわゆるtemplate typedef ・拡張sizeof 構造体/クラスのメンバをインスタンス化せずにsizeofすることが可能になる ・nullptr ヌルポインタを表

    C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう
  • Visual C++ 2010 の新機能

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 このドキュメントでは、Visual Studio 2010 に導入された、Visual C++ の新機能および強化された機能を紹介します。 Visual C++ のコンパイラとリンカー auto キーワード auto キーワードには、新しい用途が追加されています。 auto キーワードの既定の意味を使用して、変数の宣言の中の初期化子式から推測される型の変数を宣言できます。 /Zc:auto コンパイラ オプションは、auto キーワードの新しい意味または以前の意味を呼び出します。 decltype 型指定子 decltype 型指定子は、指定された式の型を返します。 decltype 型指定子を auto キ

    Visual C++ 2010 の新機能
  • Boost.勉強会#4で「ゲーム開発のC++」を話してきました - 神様なんて信じない僕らのために

    とりま、 アップロードしました。 スタッフの皆さん、参加者の皆さんお疲れ様でした。 アキラさんには直前まで資料作っていてご心配をおかけいたしました。orz... Boost study#4View more presentations from Isoparametric !.

    Boost.勉強会#4で「ゲーム開発のC++」を話してきました - 神様なんて信じない僕らのために
  • C++11のコーディング変更点まとめ

    次世代のC++規格「C++11」が国際標準として発行された。多くのC++デベロッパは、この新しいC++規格で提供される新機能に関心があると思うが、仕様書を読むのは骨が折れるとためらっている方も少なくないだろう。 そんなデベロッパの皆さんに朗報だ。C++11の登場で通常のC++コーディングとライブラリデザインなどに強く影響を与えるとみられる変更がHerb Sutter氏の記事「Elements of Modern C++ Style」にまとめられている。C++98と比べて特に見た目の変更が大きく、かつ、今後広く使われ新しいコーディングスタイルになりそうなものが紹介されており、C++11新機能を知るための導入ドキュメントとして役に立つ。 紹介されているC++11の新機能を簡単にまとめると次のとおり。 可能な限りautoを

    syaian
    syaian 2012/01/05
  • 『コンストラクタで書かれるコロン「:」って何?』

    C++ フリーでぷろぐらみんぐ 逆引きリファレンス。 C++のやりたい事から引ける逆引きメモを書いています。 何かコメントなどいただけると嬉しいです! クラスのコンストラクタのコードを書くときに、コロン「:」が良く使われます。 これって何でしょう? 最初の頃、これが良く分からなくて調べてみると、 メンバー変数や親クラスを初期化するものだと分かりました。 <コンストラクタ1> XXClass() : m_str("###") {}; こんな具合に記述されると、m_strがstringならば以下のコードが呼ばれたのと同じことです。 string m_str("####"); それだと、コンストラクタで次のように書くのと同じだと思いません? <コンストラクタ2> XXClass() { m_str = "###"; }; 私もかつてそう思ってました。 コロンは見づらいので、{}の中で記述するほう

    『コンストラクタで書かれるコロン「:」って何?』
    syaian
    syaian 2010/07/08
  • 1