タグ

C++とdevに関するjanus_welのブックマーク (13)

  • よく使うC++のイディオム 「NVI」と「RAII」

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    よく使うC++のイディオム 「NVI」と「RAII」
  • C++でfinally

    一部の言語には、finallyという機能がある。あるブロックスコープを抜ける時に、必ず実行される処理を記述することが出来る。 try { // 処理 } finally { // ブロック文を抜けた時に必ず実行される処理 } C++にfinallyがない理由は、特に専用の文法が必要なく、ライブラリで十分なためだ。デストラクターとlambda式を使えばよい。 class scoped_guard { std::function< void() > f ; public : explicit scoped_guard( std::function< void () > f ) : f(f) { } scoped_guard( scoped_guard const & ) = delete ; void operator = ( scoped_guard const & ) = delete ;

  • C++0xにすごい変更が来た

    Batavia会議は、だいぶ興味深いことになった。詳しくは、正式なNのペーパーが出てから解説するが、とにかく、非常に重要な項目をふたつだけ解説する。 まず、attributeによって提供されていた多くのクラスのメンバーに関する機能は、キーワードを与えられた。これは、言語機能は、特別な文法を与えるに値するという思想からである。会議でコンセンサスの得られた文法は以下の通りである。 struct Base { virtual void f() { } int x ; } ; struct Derived final explicit : Base { virtual void f() override { } int x new ; } ; 機能はattributeで提供されていたものと全く変わらないので、説明は省く。変更点としては、base_checkのかわりにexplicitを使い、hidi

    janus_wel
    janus_wel 2010/11/17
    …下位互換性とか実質もうないんじゃね?
  • cplusplus.com - The C++ resources network

    Tutorials C++ Language: Learn this versatile and powerful programming language. Includes detailed explanations of pointers, functions, classes and templates, among others... Reference Description of the most important classes, functions and objects of the Standard Language Library, with descriptive fully-functional short programs as examples. Browse the C++ Reference Articles User-contributed arti

    janus_wel
    janus_wel 2010/02/26
    STL の reference はここがいいかも
  • Return value and constructor

    戻値とコンストラクタの妖しい関係 C++ では、関数の引数として、ユーザが定義したクラスのオブジェクトが 必要な場合は、たいてい、リファレンスを使う。 そうしないと、引数用に一時オブジェクトが生成され、 オブェクトのコピーが発生するからである。リファレンスを使えば、 一般的にはオブジェクトのアドレスが渡されるだけなので、オブジェクト 全体をコピーするよりはるかに効率的だ。 関数引数はリファレンスで渡すというのは、まあ、常識の部類であろう。 では、関数からの戻値としてオブジェクトを返す必要がある場合はどうだろうか。 オブジェクトが保持している属性値を返すようなときは、 const 修飾子を付けた上で、リファレンスで返すのが普通だろう。 その属性値を含むオブジェクト自身を呼び出し側が保持しているので、 アドレスだけ返しても特に問題はないからだ。 では、新しくオブジェクトを生成して返さなければな

    janus_wel
    janus_wel 2010/02/22
    RVO の順を追った説明
  • 数列辞典

    The page you're looking for has moved, been replaced, or is currently unavailable to view. If you previously bookmarked a page and have now reached this message, check to make sure the link was not shortened, or go to our home page to find the page from there. We've been upgrading this site. If you selected a link on our site and reached this message, use the Back button to return to the previous

    数列辞典
    janus_wel
    janus_wel 2010/02/22
    glossary というより index という感じ
  • C++ Glossary

    このページについて C++関係の話に出てくる言葉で、「読んで字の如し」 とはいかない難解語の簡単な解説を並べてみました。Glossaryというより、 むしろ略語辞典になってしまいました。巷で見かけた単語を並べているだけなので、 実際の所ほとんど使われない略語もあったりするかもしれません。 ちゃんとした用語集は Bjarne Stroustrup's C++ Glossary などをご覧になることをオススメします。 用語集 ADL (Argument Dependent name Lookup) 引数に依存した名前の探索。 Argument Based Lookup, Koenig Lookup とも呼ばれる。 #include <iostream> #include <string> ... std::string s; std::cout << s << std::endl; // os

    janus_wel
    janus_wel 2010/02/22
    ハナシするための材料
  • Custom manipulator for C++ iostream

    I'd like to implement a custom manipulator for ostream to do some manipulation on the next item being inserted into the stream. For example, let's say I have a custom manipulator quote: std::ostringstream os; std::string name("Joe"); os << "SELECT * FROM customers WHERE name = " << quote << name; The manipulator quote will quote name to produce: SELECT * FROM customers WHERE name = 'Joe' How do I

    Custom manipulator for C++ iostream
    janus_wel
    janus_wel 2010/02/19
    直後に流し込んだ data を加工する manipulator の作り方
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    janus_wel
    janus_wel 2010/02/19
    わかりやすい。これの object 生成関数を class にしたものが Factory Method pattern
  • プログラミングメモ - std::auto_ptr の考え方とか

    std::auto_ptr が使いづらいという話を時々聞いていて,代わりに,参照カウンタ付きの boost::shared_ptr が便利だよ,という話もよく聞きます。たしかに,少し遅いものの,参照カウンタ付きのポインタってのは便利です。 一方で,std::auto_ptr は,考え方(設計思想)がいまいち分かりづらいから,不便だとか言われちゃうのかな,とも。例えば,こちらの話のような。コードはリンク先を参照してください。 auto_ptrはそのままポインタ型(BIGSTRUCT*)としては渡せず、 get()関数を呼ぶ必要があります。イヤですね。透過的でありません。でも、これは意図的なのです。 (snip) bar()内では、 引数として渡されたptrから新しいptr_barにメモリのアドレスが渡されます。しかしこれがくせ者で、 bar()から抜けるときにはこのptr_barが削除されて

    janus_wel
    janus_wel 2010/02/19
    「誰が持っているのか」がわかりやすい。使うには「貸し出す」という概念も必要か
  • 文字配列への書き込み

    (このコンテンツはメールマガジンの STL & iostream 入門に手を加えたものです。「 STL と iostream が使えるかのチェック」等はメールマガジンの方のページをご覧ください) C 言語には「文字列型」が存在しません。「文字列」を格納する場合、通常「 char 型の配列」を使用します。配列の要素ひとつひとつが、文字ひとつひとつに当たるとみなして操作します。 ですがこの文字配列は、文字列を操作するのには不便すぎます。たとえば「文字配列に文字列をコピーする」ということを直感的に行おうとすると、次のようになります。 void BadCharCopy() { char ch[128]; ch = "Nya"; // 文字列をコピー……できません。 } このコードはコンパイルエラーが発生するでしょう。これは「ポインタどうしの処理」と見なされてしまい、文字列とはまったく関係がないから

    janus_wel
    janus_wel 2010/02/17
    iostream まわりの解説
  • はてなブログ | 無料ブログを作成しよう

    【自分語り】1推しの卒業によせて . 私の1推し、ゆきりんこと柏木由紀ちゃんが、17年に渡り在籍したAKB48を卒業することになった。 この機会に、ゆきりん推し(48ファン)としての自分自身のことをすべては不可能であるものの振り返ろうと思う。 内容からして世代がわかることも仕方ないし、限りなくゼ…

    はてなブログ | 無料ブログを作成しよう
    janus_wel
    janus_wel 2010/02/14
    static link すると +120kb 程度
  • C++/CLIのビルドで生成されるコードはWin32ネイティブとMSILのチャンポンになるのか?

    外池と申します。 他のスレッドにおいて、C++/CLIにおけるCLRのクラスの定義と利用の方法について大いに議論されているところですが、以下の点について私の中で整理がつかなくなってきたので、ご存知の方にご教示いただきたく。 1)さらに別のスレッドですが、「このままでは、MFCとCLRが両方混在した形になっています」というような指摘を受けるコーディングが示されていたことがありました。 あるいは、 2) CLRの配列であるarray <T>^ と、C++の標準的な配列と、同じコーディングの中に混在させて使用することがでるようです。 まず、2)についての「混在可能」の理解は、正しいでしょうか? 正しいとして、 MFCの利用やC++の標準的な配列の利用には、プラットフォームに依存したポインタの操作とメモリ管理の手法が必要であり、そのためにはネイティブコードが必要だと思われます。一方で、CLRに準拠

    janus_wel
    janus_wel 2009/11/02
    [C++/CLI] 上にもう一層足されただけでそう asm level への mappinng という本質は変わらない
  • 1