書きかけの暫定版
C言語(89年版)の予約語 | auto | break |
case | char |
const | continue |
default | do |
---|---|---|---|---|---|---|---|---|
double | else |
enum | extern |
float | for |
goto | if |
|
int | long |
register | return |
short | signed |
sizeof | static |
|
struct | switch |
typedef | union |
unsigned | void |
volatile | while |
|
C++言語 で追加された予約語 | asm |
catch |
class |
delete |
friend |
inline |
new |
operator |
overload |
private |
protected |
public |
template |
this |
throw |
try |
|
virtual |
overload |
auto
宣言する変数が自動変数であることを明確に指定する。
自動変数とは、自動的に記憶領域を確保して、意味のある数値を格納できる変数。
関数内部だけで使うことができる。
なにも付いてない時は自動変数となるので省略可能。
int func()
{
auto int i,j,k;
}
break
while(a){・・・}
ならば制御ブロックから脱出し、do{・・・}while(b)
ならばbreak
以降を飛ばして、while(b)の評価へ飛ぶ。continue
を用いる。
int i=1;
while( ++i ){
cout << "i =" << i << "\n";
if ( i ==10 ) break;// 条件成立でwhileブロックからの脱出
}
case
多重分岐switch
文の条件を整数で指定する
条件の整数値はラベルとして扱われるので、break
でswitch
ブロック制御を抜けないとswitch
終わりまで実行される。
#include <iostream.h>
int main()
{
int s;
switch( s )
{
case 1:
cout << "case 1\n";
break; // このbreakはswitchブロックからの脱出
case 2:
cout << "case 2\n";
break; // このbreakはswitchブロックからの脱出
case 4:
cout << "case 4\n";
break; // このbreakはswitchブロックからの脱出
case 5:
case 6:
cout << "case 5 or case 6\n";
break; // このbreakはswitchブロックからの脱出
default: // default:ラベルは、switchブロックの一番最後のcaseラベルの後に書くのが作法。
cout << "defualt, case other 1\n"
}
return 0;
}
char
unsigned
の修飾がつくと0から255までとなる。char moji;
const
宣言する変数が書き換えできないことを明確に宣言する。
constで修飾されたオブジェクトを書き換えようとするコードを書くと、コンパイラがそのことを警告をしてコンパイル作業を停止する。(まれに無視されることもあるらしい)
int funcName( const char * String1 )
{
cout << String1;
return 0;
}
continue
while(a){・・・}
ならば制御ブロックの先頭に飛んで式を評価し、do{・・・}while(b)
ならばブロックの始めへ飛ぶ。break
を使う。default
switch
多重分岐の最後条件でcase
の条件に合わなかったものを含めて総ての値を真値とみなす。
一番最後のcase
よりも、後に必ず記述するのが新訳聖書以降の作法である。
#include <iostream.h>
int maim();
int s
switch( s )
{
case 1:
cout << "case 1\n";
break;
case 2:
cout << "case 2\n";
break;
case 4:
cout << "case 4\n";
case 5:
case 6:
cout << "case 5 or case 6\n";
case 8:
cout << "case 5 or case 6, or case 8\n";
break;
default:
cout << "defualt 1\n"
break; // ここのbreakはいらなそうに見えるけど、書かないとVisual C++ でコンパイルできない
}
return 0;
}
プログラミング言語でない日常会話で「宴会にdefaultで出席」のような用例は、「
用事が済んだら(無かったら)無条件で出席」という意味で使われる。
銀行の人との約束にはなぜか禁句らしい。
そう言えば世の中「幾つも面接を受けたけどdefualtで今の仕事に就いた」っ
てかたも大勢いるようだ。
do
繰り返しループの始まり。判定はループの最後にあるwhile文にある条件式で行うので、一回は必ずループの終わりまで実行される。
#include <iostream.h>
int main()
{
int n=10
do {
cout << "do loop, last " << n << "turn."
} while( --n);
returm 0;
}
double
duble a;
else
if( a==b ) cout << "tuer\n"; else cout << "flase";
enum
列挙型。
ただ単に、列挙されたシンボルに整数を割り付けるだけである。
何も断りが無い時は一番最初のシンボルが0になり、その次のシンボルはインクリメントされた値がわりつけられる。
代入演算子を使って代入することも出来る。
ANSI制定以後に設けられたもので、偉く古いC言語(K&R初版)では使うことが出来ないので、プリプロセスの#define
で一つずつマクロを定義するのが定番だった。
しかし、マクロの展開はかなり癖の強い前処理なので、意図したコードに展開されるマクロを記述するのが難しい。
enum
を用いることで難読解なコードになりやすいマクロ定義の使用を減らすことが出来る。
enum AsciiContChar {
NUL, SOH, STX, EXT, ETO, ENQ, ACK, BEL, // 0x00 to 0x07
BS, HT, LF, VT, FF, CR, SO, SI, // 0x08 to 0x0f
DLE, DC1, DC2, DC3, DC4, NAC, SYN, ETB, // 0x10 to 0x17
CAN, EM, SUB, ESC, FS, GS, RS, SP, // 0x18 to 0x1f
DEL=0x7f // Symbol of, ASCII ContrlCharactor Code.
};
extern
外部参照。
定義した変数が関数ブロックの外部にある大域変数若しくは、関数や大域変数の宣言が他のファイルにある事を明確に宣言するもの。
extern char *_environ[];
int functionName( int a )
{
extern int extObject; // 外部で宣言されている大域変数であることを明示する。
extObject =~a;
return 0;
}
float
float f_hensu;
for
繰り返しループ。条件式が真値の間forに続く式が繰り返し実行される。
条件が偽値にならないように記述すると無限ループにを作ってしまう事になる。
for( i=0 /* 初期値などの式 */ ; i>10 /* 条件式 */ ; ++i /* 変数の増加などの式 */ )
printf("i=%d\n",i);
goto
関数の外へ飛び出す無条件ジャンプを書いてはいけない。
そのような時は、C言語の場合インクルードファイルsetjmp.hに書いてある setjump()
longjump()
を用いて、C++言語の場合はtry
throw
catch
を使う。
int funcName( int a )
{
if ( a < 100 ) goto label_1;
a=a++;
label_1:
a = a/2;
return a;
}
if
分岐判断制御文。式が真値の時ifに続く式が実行される。
if( a==b ) cout << "tuer\n"; else cout << "flase";
int
long
やshort
で修飾をする。long
unsigned
の修飾がつくと0から4294967295までであるregister
return
short
unsigned
の修飾がつくと0から65535である。signed
signed
となる。sizeof
static
struct
構造体を宣言する。
幾つかの変数をまとめて一まとめにして扱うように宣言する。
住所録のようなデータ構造や、極座標の変数型定義をするようなときにつかう。
C++で拡張されたclass
と使い方が似ているが、struct
の構造体にある総てのオブジェクトがclass
のpublic
メンバにあるのと同じ。
C++では、struct
はclass
があるのではあまり使わないらしい。
// 構造体の定義
struct complex {
float real;
float imaginary;
};
// 極座標の足し算
struct complex add ( struct complex a, struct complex b )
{
struct complex rtn;
rtn.real = a.real + b.real;
rtn.imaginary = a.imaginary + b.imaginary;
return rtn;
}
switch
多重分岐。switchに続く整数型の変数をcaseやdefualtの条件式に合うかを判断する。
#include <iostream.h>
int maim();
int s
switch( s )
{
case 1:
cout << "case 1\n";
break;
case 2:
cout << "case 2\n";
break;
case 4:
cout << "case 4\n";
break;
case 5:
case 6:
cout << "case 5 or case 6\n";
break;
default:
cout << "defualt 1\n";
}
return 0;
}
typedef
typedef W_CHAR unsined short; //W_CHAR型が「符号なし単精度整数」であることを宣言
W_CHAR kanjiChar; // W_CHAR型でkanjiCharを宣言
union
struct
によく似ているが、メンバが幾つあってもメモリーに確保されるはオブジェクトは共通したポインタを持っているので一つの場所だけである。
union Word_obj {
struct INTL_WORD {
unsigned char evn; // 偶数
unsigned char odd; // 奇数
}
struct MOT_WORD {
unsigned char odd; // 奇数
unsigned char evn; // 偶数
}
unsigned short WordAccess;
};
のようなコードを記述するとメンバのstruct INTL_WORD
, struct MOT_WORD
, unsigned short WordAccess
のそれぞれを指すアドレスは全て同じとなる。
unsigned
unsigned char *strings;
void
volatile
volatile
に対してstatic
静的変数がある。volatile int intaguage;
while
条件式がブロック開始にあるので、条件によっては繰り返しブロック内を1度も実行しないことがあるのがdo
で始まる制御と違うところ。
#include <stdio.h>
int main()
{
// printing countdown number.
int
i=10;
while( i-- ) printf("%d\n", i);
return
0;
}
asm
catch
try
ブロックの中でthrow
で発信されたメッセージの受信。class
生成子
データの抽象化で、プログラムの集まりをクラスという。
例で言うならば、お饅頭を馬の糞に摩り替えることが出来ないようにするってことか(?!)。
クラスのオブジェクトを初期化する。
使い方はC言語のstruct
に似ているが、struct
とは違ってclass
は一部の構造メンバをpublic
以外の部分を非公開にすることができる。
これは、インスタンスやメソッドといった、プログラムの集まりをクラスといって、C言語のデータ構造として表現したもので、struct
でメンバ変数とよんでいたものがインスタンス変数、メンバ関数と呼ばれていたものがメソッドと名前をかえただけのようにも見えなくはない。
class ClassName {
// private objects
int i,j,k;
public:
// public objects
int function(int arg1, int arg2);
int strlenfunc( char *str );
}
delete
new
で動的に作ったオブジェクトを削除。delete
というキーワードを設けた。
friend
inline
new
delete
で確保したオブジェクトを削除すること。operator
overload
private
class
の非公開部分の宣言protected
class
の非公開部分の宣言public
class
の公開部分の宣言struct
によく似ているようだ。protected
或いはprivate
にできるだけ宣言するのがお作法。template
this
thisポインタ。
メンバ関数の暗黙の引数。
プログラムの例は実行を目的としていない不完全なものです。
#define STACK_DEEP 256
class MyStack {
int count;
char data[STACK_DEEP];
public:
mystack(){ count=0; } // デフォルトのコンストラクタ
int pop();
int push();
}
MyStack::pop() // thisポインタは暗黙で、この関数に渡されます。
{
if( this->count > 0) // this->countはメンバのchar count[]を参照していることになります。
return this->data[--(this->count)];
else return 0;
}
throw
try
ブロックの中でメッセージを発信する。catch
がメッセージを受け取る。try
throw
でメッセージを発信して、catch
がメッセージを受け取る。virtual
and
and_eq
bitand
bitor
bool
bool
型の変数は、false
とtrue
のいづれかを保持する。enum
列挙型を定義するのが一般的であるが、TRUEとFALSEのとり得る値において、値の定義がプログラマの気分に依存するといった問題があった。bool型変数の長さについては、二つの値を保持できる長さ分だけあればよい(たとえば1ビット長など)ことになっているので、int
型とは異なる扱いにするべきであるが、実際にbool
型の長さがどれくらいもっているかは、処理系の実装に依存する。
compl
const_cast
dynamic_cast
explicit
export
false
bool
型においてとりえる値で、偽値であるmutable
namespace
not
not_eq
or
or_eq
reinterpret_cast
static_cast
true
bool
型においてとりえる値で、真値であるtypeid
typename
using
using
が設けられた。
#include <iostream>
using namespace
std;
wchar_t
xor
xor_eq
著作権1996年,1996年,1998年,1999年,2000年,2004年,2005年 © 大槻昌弥
著作者に無断で雑誌やBBS等の掲載や転載及び複製物の配布や販売などの営利目的へ利用する事を固く禁ずる。
ただし営利活動を目的としない個人的利用のため、このファイルを複製することにはいっこうに構わない。