真を、falseは偽を表します。classのキーワードは省略できることがある。†C++では、使わないパラメーターは名前を省略することができる。0;}注)これはC++の新機能なのですが、C/C++両用のコンパイラの場合、Cモードでコンパイルしても省略可能な場合が多いです。†Cのキーワードに加えて、以下のものが新しくキーワードとして予約されています。xorただし、論理演算系はVC++6では予約されておらず、通常の識別子として使用できます。(他バージョンのVC++は手元にないので分かりません。†まずは簡単なプログラムの説明をします。以下のコードは画面に文字の表示をするプログラムでしょう。main()//メイン関数。0;//システムに0を返す。Hello,Workと書いてあるところを他の文字列にして試してみてください。他の文字列を表示することができます。†C++はクラス単位でプログラミングを行う言語です。クラスは変数や関数を一まとめにしたものです。プログラムの変更をしたいとき、その変更を最小限に抑えるためです。クラスにまとめることによりプログラムそのものを書き換えることなく、クラスを書き換えるだけでプログラムを変更できます。上の文字表示プログラムをクラスを使って書いて見ましょう。(*注意:実際に文字を表示するだけの小さなものをクラスにまとめるのは馬鹿のすることです。0;}これで画面に表示できます。次にこれの説明をします。先ほどの上のプログラムをコンパイルするとHello,Workが表示されると思います。そのプログラムの詳細を示して行きたいと思います。#include<iostream>この部分はiostreamというファイルを取り込みます。することでいろいろな関数を使えるようになります。*);//PrintCharacterというクラスにPutCharという関数がありますよということを示す};この部分はPrintCharacterというクラスを宣言します。public:というのはこれをつけることで外からもアクセスできますということを示します。これがないと外からアクセスできません。0;}この部分はメイン関数です。a;はPrintCharacterクラスをaという名前で作ります。a.PutChar("Hello,Work");この部分はaという名前で宣言されたクラスのPutcharという関数を呼びます。これによって文字が表示できます。同じ名前で中身の違う関数を複数定義できます。関数をオーバーロードするには、関数の呼び出し時に関数が区別できないと、つまり関数の引数の型が違わないとだめです。f()+a+b+c;}ただし、無闇に多くの関数をオーバーロードすると乱雑になりやすいので注意しましょう。演算子の機能を、関数としてプログラマが定義できます。これは、自前で定義したクラスの演算を分かりやすくしたい時などに便利です。演算子のオーバーロードをするには、キーワードoperatorを使います。参照とは、エイリアスとも呼び、「変数につけられた別名」です。int型変数aの参照bを宣言するには以下のようにします。参照ははじめにも書いた通り、「ある変数の別名」であり、元々の変数名を書いたのとまったく同様に動作します。3;とすると、aの値も3に変わります。書いたとの同じ結果を生じる。)参照の使い道これだけだとまったく使い道が無いように思いますが、参照を関数の引数として渡すと便利なことがあります。}このコードはどんな結果を生じるでしょうか。同じ挙動をしめします。しなくてはなりません。ポインタ(FILE**)を受けて、その指す先に代入・・・などとするとコードが読みにくくなります。参照はこのようなことを防ぎ、より直感的に分かりやすいコードを書くことができます。†C++にはインライン関数というものがあります。簡単に言うと、「(コンパイラが)関数のコードを、その関数を呼び出した場所にそのまま貼り付ける」といった感じです。キーワードを付けます。0;}これをコンパイルすると、次のコードをコンパイルしたのと(ほぼ)同じアセンブリコードが生成されます。呼び出した位置に展開された形になり、これを「インライン展開」と呼びます。~インライン関数のメリット~通常の関数を使うよりも高速に動作する最初にも書いたように、通常の関数呼び出しを行うと、元の関数と別の場所(場所とは生成された実行ファイル上の位置)にあるコードへジャンプします。このジャンプを行う際に、現在のレジスタの内容を保存したり、関数の処理が終わって戻ってくる場所を記憶したり、とジャンプの前処理を行う必要があり、これに時間がかかります。インライン関数を使うと上に書いたように関数のコードが呼び出し元にそのまま展開されるので、ジャンプの処理は必要なく、より高速に動作します。~インライン関数のデメリット~コードが肥大化する通常の関数呼び出しがなぜ時間のかかる処理をしてまでジャンプをするかと言うと、それは「コードを共有するため」です。呼び出されようが同じ場所へジャンプすればよいのです。呼び出されれば同じコードが100箇所に生成されます。このためコードが肥大化してしまうというデメリットがあります。~インライン関数を使う上での注意~inlineを指定した関数が必ずインライン展開されるとは限らないコンパイラがインライン展開をするに値する(メリットの方が大きい)と判断しなければ、inlineを指定してもインライン展開されないことがあります。指定することで強制的にインライン展開させることができます。Borlandのコンパイラにはこのような独自機能はないようです。いったことができません。†テンプレート関数とは、使う側の立場から見れば「引数、返り値の型が決まっていない関数」です。xの絶対値を返す関数を作りたいと考えます。すると、「引数、返り値ともにdouble(数値型で一番ビット幅が大きい)で定義して、キャストして使う」、「関数のオーバーロードを使う」などの方法がうかびます。long(C99で追加)などdouble以上のビット幅をもつ整数型に対応できません。後者は使いたい型すべてについて同じコードを何回も書かねばなりません。そこで登場するのがテンプレート関数です。longにも適用できます。~テンプレート関数の定義方法~まず具体例を見て、それから解説します。xの絶対値を返すテンプレート関数は次のように定義します。