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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C++11

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

C++

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

Q&A

解決済

3回答

15232閲覧

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

owruby

総合スコア15

C++11

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

C++

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

0グッド

3クリップ

投稿2016/04/09 06:11

編集2016/04/10 04:32

c++初学者です.

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

こんにちは。

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

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

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

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

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

投稿2016/04/09 15:30

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yumetodo

2016/04/09 17:53

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

2016/04/10 03:02

> アンチQt派が多すぎて・・・。 そうなんですか!? 初めて聞きました。 でも、Qtはソースを読んでC++の比較的難易度の低い部分を勉強すると言う意味では有用と思いますよ。大きすぎることが難点ですが。 ところで、まじめな話、Qtのどの辺が嫌がられているのでしょう? もし、何か大きな問題があるようなら、時間をかけて勉強する前に把握しておくべきと思いますし。
satoren

2016/04/11 11:57

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

2016/04/11 12:26

satorenさん。 Qtで開発するアプリはsinal slotを使いますけど、Qt自体では使ってないのでは? C++Builderと違ってコンパイラは標準品を使いますから。 あ、もしかするとQtCreatorは使っているかも知れませんね。
satoren

2016/04/11 15:21

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

2016/04/21 04: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にドキュメントがないものについては、適度に読み飛ばすことをお薦めします。
guest

0

私だったら、下記の書籍を徹底的に勉強します。
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/11 12:10

編集2016/04/11 12:22
Odacchi

総合スコア907

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yumetodo

2016/04/12 00:05

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

0

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

投稿2016/04/11 08:33

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問