タグ

C++と読み物に関するiwwのブックマーク (13)

  • gdbでポリモーフィズムにおける実際のクラス情報を取得する - Qiita

    結論 C++をgdbでデバッグする時(特にポリモーフィズム使ってる場合)は、下記の設定をするとわかりやすいです。 gdb manual 背景 C++でポリモーフィズムすると、デバッグ時に実際のクラスがぱっと見わからなくて困ることがあります。 例として、以下のようなプログラムを考えます。 Animalクラスを基底クラスとして、そこから継承したクラスをいくつか定義しています。 それらのインスタンスへのポインタをstd::vectorでまとめて、 Chorus関数にてポリモーフィズムを使ったMakeSound呼出をしています。 #include <iostream> #include <memory> #include <vector> class Animal { public: virtual ~Animal() {} virtual void MakeSound() const { std

    gdbでポリモーフィズムにおける実際のクラス情報を取得する - Qiita
  • 江添亮のC++入門

    書はプログラミングの経験はあるがC++は知らない読者を対象にしたC++を学ぶためのである。書はすでに学んだことのみを使って次の知識を説明する手法で書かれた。C++コンパイラーをC++で書く場合、C++コンパイラーのソースコードをコンパイルする最初のC++コンパイラーをどうするかというブートストラップ問題がある。書はいわばC++における知識のブートストラップを目指しただ。これにより読者はを先頭から読んでいけば、まだ学んでいない概念が突如として無説明のまま使われて混乱することなく読み進むことができるだろう。 C++知識のブートストラップを意識した入門書の執筆はなかなかに難しかった。ある機能Xを教えたいが、そのためには機能Yを知っていなければならず、機能Yを理解するためには機能Zの理解が必要といった具合に、C++の機能の依存関係の解決をしなければならなかったからだ。著者自身も苦し

  • 【改訂版】組込みソフトウェア開発向けコーディング作法ガイド[C++言語版] Ver. 2.0.pdf

    iww
    iww 2018/11/22
    買うと一応1500円する
  • C++/自殺(delete this)の話 - PukiWiki

  • C++0xの新機能、finalとoverride

    gcc 4.7は、finalとoverrideを実装している。 finalとは、クラスの派生と、virtual関数のオーバーライドを禁止するための機能である。 struct B final { } ; struct D : B { } ; // エラー struct C { virtual void f() final { } } ; struct D : C { void f() { } // エラー、C::fはオーバーライドできない } ; これ以上説明する必要がないくらいに分かりやすい機能だ。現実的には、最底辺の基クラスのvirtual関数のオーバーライドを禁止にするということはない。なぜならば、それは普通の関数とほぼかわりないからだ。あえて言えば、派生クラスで、同じシグネチャの関数を定義できなくする程度の意味しかない。大方、以下のような目的に使われるだろう。 struct A {

    iww
    iww 2012/12/20
    『overrideは、「俺はオーバーライドするぞジョジョッ!」と明示的に叫ぶための機能である。』
  • ある程度経験を積んだC++プログラマは絶対にvirtualデストラクタのないクラスを継承しない? - 神様なんて信じない僕らのために

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

    ある程度経験を積んだC++プログラマは絶対にvirtualデストラクタのないクラスを継承しない? - 神様なんて信じない僕らのために
  • スマートポインタのつくりかた - 貳佰伍拾陸夜日記

    2年ちょっと前にC++で書いた非侵入的参照カウント方式のスマートポインタ実装を発掘した. スマートポインタの実装にはC++の様々なマニアックな実装手法が隠れていて面白い. せっかくなので, 解説つきで晒すことにした. このスマートポインタはboost::shared_ptr (以下単にshared_ptr)相当のもので, 当時C++のコードを書かないといけない状況下で「boost使っちゃらめぇぇぇ!」とか言われたために, せめてshared_ptrだけでも抜き出して使おうとしたものの, 依存しているファイルの数が思ったより多くて面倒になったので, 1ファイルで完結する簡易実装を自分で書くことにした, という経緯で生まれたもの. 似たような状況では有用かも知れないし, shared_ptrのソースコードを読む助けにはなるかも知れないけれど, 基的にはboostが使えるなら素直にshared

    スマートポインタのつくりかた - 貳佰伍拾陸夜日記
  • Gauche > Archives > 2011/06/16

    "Seal Luke" "George Mason" でぐぐってもこの記事への言及しか出てこない。でも検索単語を色々いじってたら、Redditのエントリが見つかった。http://www.reddit.com/r/programming/comments/hweg5/c_grammar/ この中に http://www.reddit.com/r/programming/comments/hweg5/c_grammar/c1yydvd というコメントがあり、それが上のエントリの元ネタなのだろう。 Seal Luke氏のサイトはこちら。 http://www.cs.gmu.edu/~sean/ ざっとサイト内検索をかけてみたけどそれらしき言及は見当たらない。ただまあ、発言が当だったとしても、題は後半の "The language specification is so large and

  • はいはい縦書き縦書き・・・・・ッ!? - Webと文字

    縦書き”ってどうやるの? 調べてみました。 エセ縦書き縦書き文庫】はじめに(管理人) 下に載っているのは全部エセ縦書きです。 縦書きサイト普及委員会 やっていることは いな           新 いん    ,─--.、 言と   ノ从ハ从   ス 葉聞   .リ ´∀`§ かこ    X_@X    レ |え   U|_____|U |の    ∪ ∪ ! ! と同じです。横向きを無理やり縦に見せてるわけですね。これを改善するには以下が焦点となります。 センターラインからのズレ 横向きと縦向きで形が違う文字 ex)「」ー これをfreetypeとtypeface.jsで改善して見ます。 ズレを直す そもそもの問題として、フォントによって縦書き出来るかどうかが分かれます。縦書きが可能なフォントには、縦書きした時のグリフ位置情報(縦書き用メトリクス)が含まれています。 このようなフォ

    はいはい縦書き縦書き・・・・・ッ!? - Webと文字
  • Account Suspended

    Account Suspended This Account Has Been Suspended

  • 「構造化プログラミングに関する覚え書き」へと導いたもの | taro-nishinoの日記 | スラド

    明けましておめでとうございます。 さて、私の周辺では、先日に書いた"Gotoは有用である"について、折角のMatt S. Trout氏の文よりも、何故か不幸にも私の書いた訳注の方が話題になっています。 Linus氏はgoto有用論の他にも、C++をボロクソに貶したり、当に愉快な人だと私は思います。ただ、C++を貶された時の反応として、海外は置いとくとして、日の一部の人が余りにも井の中の蛙的な反応をしたように記憶しています。代表的な例は「Linusはオブジェクト指向が分からないからだ」というのがあります。私は思わず笑いました。Linus氏ほどの頭脳で分からないことが、極東の日の貴方がたは分かっていると言わんばかりじゃないですか。一部にせよ、だから日は駄目だと思いました。つまり、自己を客観視せず、実質的実力は無いのに一流家気取りなんですね。もっとはっきり言えば何様のつもりなんだと。ど

  • C/C++ 迷信集 | 株式会社きじねこ

    C/C++ を使うプログラマは大勢います。しかし、その多くは OJT を通して言語を学んだのではないでしょうか? 実はそこに大きな落とし穴があります。 コンピュータや工学のことをよく知らない人たちは、時代の先端を歩むプログラマには「迷信」など無関係だと信じて疑わないかも知れません。しかし、迷信や誤解はどんな世界にも常に存在しています。 というわけで、ここでは C/C++ にまつわる迷信、誤解、よくある間違いを採り上げていきます。非常に後ろ向きな企画ですが、暇つぶし気分転換に読んでみてください。もしかすると、ご自身が迷信にとらわれていたことに気付くかもしれません。 追記(2009/03/15) このコーナーでは、C/C++ にまつわる迷信、誤解、よくある間違いを扱っています。決して「迷信」だけではないのですが、タイトルにはすべて[迷信]を付けています。 これは、主に検索エンジンでタイトルを見

  • 間違ったコードは間違って見えるようにする - The Joel on Software Translation Project

    Joel Spolsky / 青木靖 訳 2005年5月11日 水曜 私が最初の当の仕事をはじめたのは1983年9月に遡る。それはオラニムというイスラエルの大きな製パン工場で、16台の飛行機ほどもある巨大なオーブンで、毎晩10万個のパンが作られていた。 はじめて工場に入った時、そのあまりの汚さに信じられない思いだった。オーブンの側面は黄ばんでいるし、機械は錆びていて、そこらじゅうが油だらけだった。 「いつもこんなに汚いの?」と私は聞いてみた。 「なんだって? なんの話をしてるんだ?」とマネージャが答えた。「掃除したばかりだから、今が一番きれいな状態なんだ」 なんてこった。 毎朝の工場の清掃を何ヶ月か続けて、ようやく彼らの言っていたことが理解できるようになった。パン工場では、きれいというのは機械にパン生地が付いてないことを言うのだ。きれいというのは、ゴミ箱に発酵したパン生地が入ってないこと

  • 1