タグ

c++に関するmaganebaのブックマーク (28)

  • C/C++のための開発援助ツール、GCCSenseをリリースしました - Functional Emacser

    未踏プロジェクトの支援を受けて開発していた、C/C++のための開発援助ツールGCCSenseをリリースしました。配布物やドキュメントは次のURLから入手できます。 http://cx4a.org/software/gccsense/index.ja.html 開発援助ツールと銘打っていますが、現状利用できる機能はコード補完と自動構文チェック(Emacsのみ)だけです。将来的には関数ヘルプ機能や型表示機能を実装する予定です。 GCCSenseはコード補完などの機能を搭載した独自のGCCを利用しているため、インストールがかなり面倒です。ドキュメントによってある程度カバーしたつもりですが、環境によってまちまちなのでインストール時に問題が出てくるのは必至だと思います。その際は私に連絡してください。 また、独自GCCを利用している関係上、現状ではWindowsでの利用はできません。自由なソフトウェア

    C/C++のための開発援助ツール、GCCSenseをリリースしました - Functional Emacser
  • やねうら王 公式サイト

    サイトのメインコンテンツ やねうら王 — 棋力的にトップ集団の将棋ソフトに比肩する将棋ソフト やねうら王オープンソースプロジェクト — やねうら王miniから最新のやねうら王までのソースコードと思考エンジン体 ふかうら王 — Deep Learningを採用した新しい時代の将棋ソフト たけわらべ — 利きだけを理解している新しい感覚の将棋ソフト Stockfish完全解析 — コンピューターチェスの強豪ソフトStockfishの完全解析 将棋電王戦  — 株式会社ドワンゴ主催の将棋電王戦。やねうら王は4年連続出場 コンピューター将棋全般 — コンピューター将棋全般の話題 プロコン — CODEVSなどプログラミングコンテストの話題 なお、この記事のここから下には新着記事が表示されています。

  • MSDN ホームページ

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

    MSDN ホームページ
  • cppreference.com

    Function objects − hash (C++11) Swap − Type operations (C++11) Integer comparison (C++20) pair − tuple (C++11) optional (C++17) expected (C++23) variant (C++17) − any (C++17) String conversions (C++17) Formatting (C++20) bitset − Bit manipulation (C++20) Debugging support (C++26)

  • C++に実行時の型なんてものはない - 神様なんて信じない僕らのために

    は嘘でした。k.inaba さんの指摘で修正。 と、まで書くと言い過ぎか?*1 また、オーバーロードされた演算子の動作を特別に考える必要もない。 演算子オーバーロードした演算子はメンバ関数と同じ動きをする。 virtualでない演算子は、演算子を呼び出した対象オブジェクトの「変数の型」によって決定される virtualな演算子は、演算子を呼び出した対象オブジェクトの「実行時の型」によって決定される 要するに、メソッドと同じ C++で演算子オーバーロードしたときの演算子決定基準について調べた - 矢野勉のはてな日記 ちょっと違う。 単に同じ動きをするだけでなく、同じものだ。 クラスに対しオーバーロードされた演算子はメンバ関数のシンタックスシュガーに過ぎない。 また、メンバ関数であるとは限らないので、メソッドと同じとすべきではない。 あと、少なくとも、C++は実行時の型情報を元にメンバ関数を呼

    C++に実行時の型なんてものはない - 神様なんて信じない僕らのために
  • ある程度経験を積んだC++プログラマは絶対にvirtualデストラクタのないクラスを継承しない? - 神様なんて信じない僕らのために

    ある程度経験を積んだC++プログラマは絶対にvirtualデストラクタのないクラスを継承しない C++では基底クラスにvirtualデストラクタを書こう - *「ふっかつのじゅもんがちがいます。」withぬこ はよくある間違い。あるいはC++初心者の勘違い。 継承する可能性のあるクラスにはすべてvirtualデストラクタを作る C++では基底クラスにvirtualデストラクタを書こう - *「ふっかつのじゅもんがちがいます。」withぬこ ということが否定されていることは言われるようにEffective C++を読んでいればわかること。 C++では、コピー不可にするために以下のようなクラスを書いたりするが、 (コピーコンストラクタとコピー代入演算子を無効にする) class Uncopyable { protected: Uncopyable() {} ~ Uncopyable() {}

    ある程度経験を積んだC++プログラマは絶対にvirtualデストラクタのないクラスを継承しない? - 神様なんて信じない僕らのために
  • Kazuho@Cybozu Labs: C++ テンプレートを使って MBCS と Unicode ちゃんぽんなコードを書く話

    « Greasemetal (Google Chrome 用 Greasemonkey) を公開しました | メイン | Greasemetal 0.2 をリリースしました » 2008年09月12日 C++ テンプレートを使って MBCS と Unicode ちゃんぽんなコードを書く話 あちこちから寄せ集めたコードを組み合わせるようなプログラムを書いていると (Greasemetal のことですね)、プログラム内に MBCS 前提のコードと UTF16 前提のコードが混在することが往々にして発生します。 C++ の世界のみで完結できるのであれば、型テンプレートと関数の多重定義を使って総称的なコードを簡単に書けるのですが、実際は、MBCS 版と UTF16 版で関数の名称が異なる C API を呼び出す必要が出てきたりします。具体的には、RegQueryValueExA と RegQuer

  • Pimplイディオム - ぐるぐる~

    読書会で「C++は循環参照の記述が困難なところが・・・」という話題があったけど、その場はPimplイディオムという言葉のみを紹介しておいた。 ということで補足を。 まず、問題となるコードはこんな感じ。 // hoge.h #pragma once #include "piyo.h" class hoge { piyo p; }; // piyo.h #pragma once #include "hoge.h" class piyo { hoge h; }; このコードはどうがんばってもコンパイルできない。 なぜなら、hogeをコンパイルする為にはpiyoが必要で、piyoをコンパイルする為にはhogeが必要だから。 これを、Pimplイディオムを使用して回避するとこんな感じになる。 // hoge.h #pragma once class hoge { // hogeクラスのprivate

    Pimplイディオム - ぐるぐる~
    maganeba
    maganeba 2008/09/27
  • ファイナライザ、デストラクタ - ぐるぐる~

    読書会で話題に上がったけど、この辺の用語は言語によってまちまちで、かなり紛らわしい。 その場ではファイナライザとデストラクタは別物だよ、と言っただけなんで、補足を。 まずは、言語ごとに何を持っているのかの表を。 言語 ファイナライザ デストラクタ Java あり なし C# なし あり C++ なし あり ただし、C#のデストラクタはC++のデストラクタ*1より、Javaのファイナライザ*2と同じような意味を持つため、 言語 Javaでのファイナライザ相当品 C++でのデストラクタ相当品 Java あり なし*3 C# あり*4 あり*5 C++ なし あり となる。 実際、C#でデストラクタを記述すると、以下のように記述したのと同じ意味となる。 protected override void Finalize() { try { // デストラクタの中身 } finally { base

    ファイナライザ、デストラクタ - ぐるぐる~
  • スーパークラスのフィールドへのアクセス - ぐるぐる~

    読書会で、抽象クラスのフィールドはデフォルトで protectedにする privateにしてprotectedなgetter/setter*1を用意する のどちらがいいか、という話があった。 昔は後者を好んで使用していたけど、最近はとりあえず前者を使うことが多い。なんたって手軽だし。 で、前者の問題として、そのフィールドが何者か分かりにくい、という点があげられる。 これの解決方法として、スーパークラスのフィールドにアクセスする際には、明示的にsuper*2をつけてアクセスするという方法を採用している。 例えば、 // Java版 abstract class Hoge { protected int i; } final class HogeImpl extends Hoge { void method() { System.out.println(super.i); } } // C#

    スーパークラスのフィールドへのアクセス - ぐるぐる~
  • RAII - ぐるぐる~

    詳しい文脈は忘れてしまったけど、読書会で「C++はデストラクタが弱い」的な話題があがった。 その場はRAII*1使えばいいよ、とだけ言って概要のみ説明しただけだったので補足を。 まずは、RAIIの実例を知ってもらう為に、簡単なサンプルの紹介から。 void write_to_file(const std::vector<std::string>& vec) { std::ofstream fout("out.txt"); std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(fout, "\n")); } このプログラムでは、ファイルストリームのオープンもクローズも明示的に行っていないにもかかわらず、どちらも正しく行われる。 これは、コンストラクタ内部でオープンを行い、デストラクタ内部でクローズを行うことで

    RAII - ぐるぐる~
    maganeba
    maganeba 2008/09/26
  • オーバーロードは砕けない - 神様なんて信じない僕らのために

    タイトルはどうでも良い!! 要するに名前が同じで引数が違うメンバ関数は継承先で引き継がれないよ、ということ。 どういうことかと言うと、 class A { public: void setTarget(A* a) { a_ = a; } private: A* a_; }; こんなのがあるとする。 ターゲットとしてA*を持つ。 が、これを継承したBでは、ターゲットとしてベクトルを持ちたくなったとする。 すると当然こうする。 class Vector2D { public: Vector2D(int x, int y) : x_(x), y_(y) {} Vector2D() : x_(0), y_(0) {} private: int x_; int y_; }; class B : public A { public: void setTarget(const Vector2D& v)

    オーバーロードは砕けない - 神様なんて信じない僕らのために
    maganeba
    maganeba 2008/09/24
  • デストラクタの振る舞い - 神様なんて信じない僕らのために

    職場で 継承先でデストラクタを省略したり、 virtualとつけなかったらどうなるの? って言われたので、 「基底クラスに従うんだぜふじこ!」(ふじこは長いので略) とかいう話をした。 質問者が何を心配してたかっていうと、 基底Aを継承したB、 Bを継承したCがあるとき、 Aはvirtualなデストラクタを持っているが、 Bにはデストラクタがなく、 Cにはvirtualを省略したデストラクタがある。 この場合、 A* ac = new C(); delete ac; B* bc = new C(); delete bc; はCのデストラクタを正しく呼び出すのか? ということだ。 呼び出されなかったらえらいことだろふじこ!! Bには暗黙のデストラクタがあるんだふじこ!! Cで省略してもAの状態を引き継ぐんだぜふじこ!! だけど、省略すると読み手が混乱するから省略しないようにしなさいよねふじこ

    デストラクタの振る舞い - 神様なんて信じない僕らのために
    maganeba
    maganeba 2008/09/06
  • KAB-studio

    JavaA2ZJavaについてのあらゆる用語を網羅したプログラミング辞書です。全予約語、全演算子、使用頻度の高いAPIを含む1000以上の単語を掲載しています。しかも、全ての用語にそのままコンパイル・実行できる使用例が掲載されているので、実際に動かして試すことができます。 Javaのオブジェクト指向入門Javaを使用した、オブジェクト指向プログラミングの入門書です。クラスやインスタンスといった基的な部分から、継承やポリモーフィズム、インタフェースといった分かりづらい部分まで、図を使って分かりやすく説明しています。 CodianVisual C++ 6.0を使用したC++プログラミングについての解説集です。ポインタ、STL、DLL、システムフック、シェルエクステンションなど、他にはない希少な情報を丁寧かつわかりやすく説明しています。

    maganeba
    maganeba 2008/08/06
  • C++ : language&libraries

    maganeba
    maganeba 2008/07/17
  • Format Specifiers in C++ - Visual Studio 2015

    Note This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here You can change the format in which a value is displayed in the Watch window using format specifiers. You can also use format specifiers in the Immediate window, the Command win

    Format Specifiers in C++ - Visual Studio 2015
    maganeba
    maganeba 2008/07/17
  • サービス終了のお知らせ

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

    maganeba
    maganeba 2008/07/17
  • C++の基礎 : const 修飾子

    BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア / 携帯 Java アプリ圧縮ツール : 株式会社 ソフィア・クレイドル English FAQ C++の基礎 : const 修飾子 const 修飾子 C++ 言語には、定数を表現するための const 修飾子が用意されています。ここでは const 修飾子のさまざまな使い方について説明します。 const 修飾子を使う目的は、コンパイラによる最適化を促進するためと、プログラムの意味をより明確にすることです。 const 変数 変数の宣言に const をつけることで、その変数の値が書き換えられないようにできます。 const SIntN max_foods = 120; max_foods = 130; // コンパイル エラー const 引数 関数の引数に const を指定すると、その関数の中で

    maganeba
    maganeba 2008/07/17
  • http://www.g-ishihara.com/index.html

    maganeba
    maganeba 2008/07/17
  • ロベールの部屋

    ここは私ロベールの運営するロベールの部屋です。 プログラミング情報サイトとして絶賛更新停滞中です。 ネタがあれば更新するかもしれません。 では、ごゆっくりどうぞ。 C++講座がになりました なんか凄い紹介されていますが、講座がになりました。 書かれている通り、かなり内容を変更しています。講座にはいくつかの間違いが含まれていますが、では可能な限り直してあります。説明の足りない部分、分かりづらい部分、日語のおかしい部分なども加筆修正してあります。根的に内容を変更している部分も多いですし(特にクラス関連)、新規に追加した内容もあります。図も大幅に増強して、かなり内容が変わっていると感じるかと思います。 ページ数は 946 ページとかなりの分量(そして分厚さ)になりましたが、途中まで読んだだけでも(エレガントではないまでも)プログラムを組む事ができるように作ってあるので、途中で挫折しても

    maganeba
    maganeba 2008/07/17