質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • C++

    3608questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • C++11

    108questions

    C++11は2011年に容認されたC++のISO標準です。以前のC++03に代わるもので、中枢の言語の変更・修正、標準ライブラリの拡張・改善を加えたものです。

C++での綺麗なライブラリやコードを教えて欲しい

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 2,776

owruby

score 7

c++初学者です.

今は入門的な本は終わって、基本的な概念はつかめたところです.
そこでコードの模写を使用と思うのですが,参考になるコードやサンプルソースを教えていただけると助かります.

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+2

こんにちは。

GitHubに上がってないものが多いですが、メジャーなオープン・ソースをいくつか書いてみます。

まず、Qtは比較的読みやすかったですよ。
巨大なので、どこから手を付けるのか問題ですが。簡単なC++アプリから入って何か興味深いクラスを見つけて読むと良いと思います。pimplイデオムが良く使われています。
なお、Qt Quickはアプリを作るのには向いてますが、ソースを読むのは大変なので勉強目的なら避けた方が良いと思います。

次に、コンパイラならclang/llvmは比較的読みやすかったです。
英語ですが、内部クラスのドキュメントも結構ありますし。

以下はかなりマニアックです。でも、多少なりと解読に成功したら、力がむちゃくちゃ付きます。

テンプレート・メタ・プログラミングなら、sproutと思います。
プリプロセッサならでちまるさんと言う方が凄いです。
最後に、C++の超々高度な使い方を学ぶにはBoostですね。Boostから標準ライブラリへ採用されることも少なくないそうです。でも、ソースの難易度も非常に高いので、テンプレート・メタ・プログラミングと高度なプリプロセッサの使い方を多少なりと把握してから手をつけた方が良いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/10 02:53

    やっぱsproutは読みやすいよなぁ。TMPとconstexprで困ったらとりあえずあれ見に行くぐらいには。ところでQtはC++er的に勧めていいのかなぁ・・・。アンチQt派が多すぎて・・・。

    キャンセル

  • 2016/04/10 12:02

    > アンチQt派が多すぎて・・・。

    そうなんですか!? 初めて聞きました。
    でも、Qtはソースを読んでC++の比較的難易度の低い部分を勉強すると言う意味では有用と思いますよ。大きすぎることが難点ですが。

    ところで、まじめな話、Qtのどの辺が嫌がられているのでしょう?
    もし、何か大きな問題があるようなら、時間をかけて勉強する前に把握しておくべきと思いますし。

    キャンセル

  • 2016/04/11 20:57

    QtはC++に独自の拡張(signal slot など)を行っているのでC++の勉強には不向きかと思われます。

    キャンセル

  • 2016/04/11 21:26

    satorenさん。

    Qtで開発するアプリはsinal slotを使いますけど、Qt自体では使ってないのでは? C++Builderと違ってコンパイラは標準品を使いますから。

    あ、もしかするとQtCreatorは使っているかも知れませんね。

    キャンセル

  • 2016/04/12 00:21

    使っています。
    C++のコンパイラでコンパイルする前に、qmakeによってmoc_xxxx.cppというソースコードを自動生成します。それらがないとQtをビルドすることはできません。
    qobject.hにもQ_SLOTS Q_SIGNALSというslots signalsと同じものであるキーワード(マクロですが)が使われているのが読めるかと思います。

    C++コンパイラでコンパイルする時はslotsやsignalsはプリプロセッサマクロでブランクやpublic:へ置き換えられます。

    キャンセル

  • 2016/04/21 13:33

    satorenさん。

    コメント遅くなりごめんなさい。
    確かにmoc_*.cppが生成されてますね。しかもqtbaseのcorelibまで...orz
    う~ん、こんなに多かったのか。以前読んだ時は、たまたま絡まない部分しか読まなかったようです。

    owrubyさん。

    satorenさんが仰るとおり、Qt自身のソースがC++を独自拡張していて、しかも、結構その範囲が広いのでC++初学者ならば避けたほうが良さそうです。すいません。

    となると私が把握している比較的ソースが綺麗なものはclang/llvmです。
    llvm/tools/clang/tools/driver
    が、コンパイラ・ドライバです。cl.exeやg++.exeを置き換えて使うもののソースです。
    実際のコンパイラを呼び出すための入り口部分なので糸口は掴みやすいです。ただ、clang/llvmのライブラリを使っている部分で苦労します。上記フォルダに含まれず、かつ、WEBにドキュメントがないものについては、適度に読み飛ばすことをお薦めします。

    キャンセル

+1

書籍になりますが「CODE COMPLETE」がお薦めです。C++,C#,Java,Visual Basicのサンプルコードが掲載されています。
Boostはかなり高度なテクニックが駆使されているので、まずはテンプレートについての深い知識が必要かと。「C++テンプレートテクニック」にC++テンプレートに関してくわしく解説されています。
共にAmazonで購入可能です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

私だったら、下記の書籍を徹底的に勉強します。
1はC++の開発者が書いた本の最新版です。当たり前ですがC++の機能が網羅的に書かれています。2と3はよりニーズを捉えた本だと思いますがレベルが一段上がります。ただ、どれも持っておいて損はない本です。

  1. プログラミング言語C++第4版
  2. Effective C++ 第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTI)
  3. Effective Modern C++ ―C++11/14プログラムを進化させる42項目

(最後に蛇足です。完全に個人的な主観ですが、1は、C++プログラマを名乗る人には持っていてほしいなと思います。C++の原典ですし。)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/12 09:05

    うー、まだプログラミング言語C++第4版買えてない・・・

    キャンセル

関連した質問

同じタグがついた質問を見る

  • C++

    3608questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • C++11

    108questions

    C++11は2011年に容認されたC++のISO標準です。以前のC++03に代わるもので、中枢の言語の変更・修正、標準ライブラリの拡張・改善を加えたものです。