Upgrade to Pro — share decks privately, control downloads, hide ads and more …

C++入門?

 C++入門?

昔からC++ の入門書に違和感があったので、ちょっとそれについてまとめてみました

tsuda.a

April 05, 2014
Tweet

More Decks by tsuda.a

Other Decks in Programming

Transcript

  1. CのHello World #include <stdio.h> int main(void) { printf("Hello, world!"); return

    0; } 出典 http://ja.wikipedia.org/wiki/Hello worldプログラムの一覧 hello_1.c
  2. C++のHello World #include <iostream> int main() { std::cout << "Hello,

    world!" << std::endl; } // return がないのはいいのか?・・・ 出典 http://ja.wikipedia.org/wiki/Hello worldプログラムの一覧 hello_2.cpp
  3. Cのコードだとダメなわけ? #include <stdio.h> int main(void) { printf("Hello, world!"); return 0;

    } 出典 http://ja.wikipedia.org/wiki/Hello worldプログラムの一覧 hello_3.cpp
  4. なにが C++ らしいのか? #include <iostream> int main() { std::cout <<

    "Hello, world!" << std::endl; } Iostreamライブラリ “.h“ がついてない 名前空間 標準出力ストリーム グローバルオブジェクト 出力演算子 行を終了し、バッファを フラッシュするオブジェクト? なんかもりだくさん。 実はオーバーロード
  5. <<

  6. 演算子オーバーロード << を演算子オーバーロードし、 << を実行すると、左シフトではなく、 別の処理を実行するようにしている。 # cout の場合は標準出力へ出力する。 要するに

    C++ では演算子がどのような演算を するかをプログラムで指定する仕組みがあり、 それで演算子の動作を変えている。
  7. 調べた でも大丈夫です。 C++ は C と互換性があるのでコード内で cout と printf をごちゃ混ぜに

    しても良いのです。 簡単な出力やデバッグには cout 、 計算結果など小数のフォーマットをそろえたい ときは printf と使い分ければ 問題ありません。 出典 http://www.flow.cs.is.nagoya-u.ac.jp/hamada/programming/cpp2.html
  8. 参考1) cout による書式設定 別に cout が書式設定できないわけではないよ うです。 出典 http://msdn.microsoft.com/ja-jp/library/420970az.aspx #include

    <iostream> #include <iomanip> using namespace std; int main() { cout << setiosflags(ios::fixed); cout << setw(7); cout << setprecision(2); cout << 12.3; cout << " "; cout.fill('0'); cout << setw(2); cout << hex; cout << 10; }
  9. 参考2) もっとも美しきクソコード (個人的見解) void strcpy (char *s, char *t) {

    while (*s++ = *t++) ; } 出典 プログラミング言語C