メモ。

やさしいC++―まずは「C言語」からはじめよう!! (I・O BOOKS)

やさしいC++―まずは「C言語」からはじめよう!! (I・O BOOKS)

やさしいC++〈Part2〉クラスとオブジェクト指向 (I・O BOOKS)

やさしいC++〈Part2〉クラスとオブジェクト指向 (I・O BOOKS)

 全部読んだ、けど……消化し切れていない。後で読み返す。
C++ Coding Standards―101のルール、ガイドライン、ベストプラクティス (C++ in‐depth series)

C++ Coding Standards―101のルール、ガイドライン、ベストプラクティス (C++ in‐depth series)

  • 作者: ハーブサッター,アンドレイアレキサンドレスク,浜田光之,Herb Sutter,Andrei Alexandrescu,浜田真理
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2005/10
  • メディア: 単行本
  • 購入: 20人 クリック: 383回
  • この商品を含むブログ (100件) を見る
 p.152、この本を読んでいるとつくづく【Cを学んでからC++を学ぶ】ことが【Qwerty英字入力を習得してからQwertyローマ字入力を習得すること】に近いのだな……と思わせる部分がある。
 両者は「見かけは色々なところが似ていて、根本的なところは非である」気がする。
 【Qwerty英字入力を習得してからQwertyローマ字入力を習得すること】には、「Qwerty英字入力を習得していて、JISX4063ローマ字を習得済みであれば【とりあえず打てる】」という美点と共に「【無意識レベルでタッチタイプするためには】結局初めから練習しなければならない」という汚点も内包しているのだけれど、CとC++の間にもそういう関係があるのかもしれない。
 いきなりQwertyローマ字入力をやるための方法には「はじめからしつこく2キー単位で規定の文字列を打つ(=それは増田式)」というのがあるとして、C++の習得に関してもそういう直接的な学習方法があるのかも?
 ……というか、

  • 【C】配列とポインタは切り離せない関係にある→配列を覚えてからポインタを覚えよう。
  • C++】配列のサイズに依存してバッファオーバーランを引き起こしては洒落にならないので、代わりにvectorやstringを使おう。

 この2つを矛盾なく満たして説明するために【まずCをやろう】→【C++でCの欠点を補おう(部分的に否定しよう)】という説明手順を踏むのは、だいぶ問題or無駄があるのではないかな、と。
 

独習C++

独習C++

 これが「いきなりC++を習得するための本」【ではない】ことは既にレビューから判明しているので、その点はちょっと微妙だけれど……。


 どういう構成でも構わないので【(後からわざわざ否定をするようなことを避けた)C++だけにフォーカスした書籍】というものを手にしてみたいなぁ……と。C++オンリーのレイヤで「入門」→「ステップアップ」できる(Cの解説書に説明を丸投げしない)書籍は、レビューを見る限り「まだ存在しない」のかもしれない。

#include <cstdlib>      // to use "system()".
#include <iostream>     // to use "cout".

using namespace std;

int main(int argc, char *argv[])
{
    cout << "学習を";	// 始めはここだけを説明する。
    system("PAUSE");       // 改行せず、引き続きシェルのPAUSEコマンドを発行。
    return EXIT_SUCCESS;
}
#include <cstdlib>      // to use "system()".
#include <iostream>     // to use "cout","cin","endl".
#include <string>       // to use "string".

using namespace std;

int main(int argc, char *argv[])
{
    string st;
    cout << "copy:";
    cin >> st;
    cout << "paste:" << st << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
#include <cstdlib>      // to use "system()".
#include <iostream>     // to use "cout","cin","endl".
#include <string>       // to use "string".

using namespace std;

int main(int argc, char *argv[])
{
    string st;
    cout << "copy:";
    cout << "paste:" << st << cin;   // どちらにせよ動かない。
//  cout << "paste:"  << cin;        // どちらにせよ動かない。
    cout << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}

 うーん……とりあえず、このあたり……からだろうか。
 一つ目が改行コードなしで「PAUSEコマンドで出るシステムメッセージの頭に文字を付加して」遊ぼう(?)という話、3つ目はダメな例(説明できないのだけれど)。