C++基本機能

〜 目次 〜

予約語

C++予約語一覧
asmautobad_castbad_typeid
boolbreakcasecatch
charclassconstconst_cast
continuedefaultdeletedo
doubledynamic_castelseenum
exceptexplicitexternfalse
finallyfloatforfriend
gotoifinlineint
longmutablenamespacenew
operatorprivateprotectedpublic
registerreinterpret_castreturnshort
signedsizeofstaticstatic_cast
structswitchtemplatethis
throwtruetrytype_info
typedeftypeidunionunsigned
usingvirtualvoidvolatile
whilexalloc

↑目次に戻る

標準ストリーム

ストリーム
標準入力ストリーム→ cin
標準出力ストリーム→ cout
標準エラー出力ストリーム→ cerr

例:標準ストリーム

#include <iostream.h>

void main()
{
    char ss[80];

    cout << "何か入力してください:";
    cin >> ss;
    cout << "入力した文字は[" << ss << "]です\n";
}
↑目次に戻る

マニュピレータ

指定機能用途
oct8進数処理入出力
dec10進数処理入出力
hex16進数処理入出力
ws空白読み飛ばし入力
flushバッファのフラッシュ(強制書き出し)出力
endl改行出力付きflush出力
ends'\0'を追加してflush出力

例:マニュピレータ


#include <iostream.h>

void main()
{
    int dt=255;

    cout << dec << dt << endl;    //10進数で出力
    cout << hex << dt << endl;    //16進数で出力
}

実行結果

255
ff
↑目次に戻る

関数プロトタイプ

関数プロトタイプではデフォルト値を指定できる。これを使うと引数省略形式関数が簡単に作ることができる。

例:関数プロトタイプ

#include <iostream.h>

void disp(int idt=100, double ddt=123.456);    //関数プロトタイプ

void main()
{
    disp();
    disp(11);
    disp(11, 22.33);
}

void disp(int idt, double ddt)
{
    cout << "idt=" << idt << " ddt=" << ddt << endl;
}

実行結果

idt=100 ddt=123.456
idt=11 ddt=123.456
idt=11 ddt=22.33
↑目次に戻る

変数の宣言位置

C++ではブロック内のどこでも変数の宣言が可能。ただし、宣言と同時に値を評価することはできない。

例:変数の宣言位置

#include <iostream.h>

void main()
{
    for(int i=1; i<=5; i++){    //for内で変数iを宣言
        cout << "i=" << i << endl;
    }

    cout << "_i=" << i << endl;    //ここでも変数iは有効
}

実行結果

i=1
i=2
i=3
_i=4
↑目次に戻る

スコープ解決演算子

グローバル変数とローカル変数が同一名の時でも、グローバル変数を使用できるようになっている。その時、使用されるのが、スコープ演算子(::)である。

例:スコープ解決演算子

#include <iostream.h>

int dt=100;    //グローバル変数

void main()
{
    int dt=200,a,b;

    a = ::dt;    //グローバル変数のdtを代入
    b =   dt;    //ローカル変数のdtを代入
    cout << "a=" << a << " b=" << b;
}

実行結果

a=100 b=200
↑目次に戻る

参照

値(アドレス値)を変更できないポインタで、自動的に*演算子が適用されるものであり、変数名のエイリアス(別名)をつける。

→参照の特徴

1.初期化時にアドレスを設定するが、アドレスポインタのようなアドレス変更はできない。

2.変数値の操作しかできない。

例:参照

#include <iostream.h>

void main()
{
    int a;
    int& r=a;    //「参照」を宣言。int &r=aとしても同じ

    a=100;
    cout << "a=" << a << "  r=" << r << endl;
    r=200;
    cout << "a=" << a << "  r=" << r << endl;
}

実行結果

a=100  r=100
a=200  r=200
↑目次に戻る

参照を関数に渡す

参照も関数に変数値を渡すことができる。ポインタと違い、間接演算子を使う必要がない。アドレスを渡すので、構造体などを渡す時に便利。

例:参照を関数に渡す

#include <iostream.h>

void atai(int dt)        //値渡し
{
    cout << "値:" << dt;
    dt=0;        //効果がない
}

void pointer(int *dt)    //ポインタ渡し
{
    cout << "ポインタ:" << *dt;
    *dt=0;
}

void sansyou(int& dt)    //参照渡し
{
    cout << "参照:" << dt;
    dt=0;
}

void main()
{
    int a;
    a=100; atai(a);     cout << " a=" << a << endl;
    a=100; pointer(&a); cout << " a=" << a << endl;
    a=100; sansyou(a);  cout << " a=" << a << endl;
}

実行結果

値:100 a=100
ポインタ:100 a=0
参照:100 a=0
↑目次に戻る

関数の多重定義(オーバーロード)

引数は異なるが、同じ処理をしている場合、C++の「関数のオーバーロード機能」を使用して、関数の多重定義をすることができる。

例:関数の多重定義

#include <iostream.h>

void disp(int dt)    //・・・(1)
{
    cout << "int型 " << dt << endl;
}

void disp(double dt)    //・・・(2)
{
    cout << "double型 " << dt << endl;
}

void main()
{
    int idt=100;
    double ddt=12.34;

    disp(idt);    //(1)を呼び出す
    disp(200);    //(1)を呼び出す
    disp(ddt);    //(2)を呼び出す
    disp(23.45);    //(2)を呼び出す
}

実行結果

int型 100
int型 200
double型 12.34
double型 23.45
↑目次に戻る

メモリの動的確保

C++でメモリを動的に確保/開放するためにはnew/delete演算子を使用する。new/deleteは、演算子なので、ライブラリを必要とせず、記述が簡潔になっている。

例:メモリの動的確保

#include <iostream.h>

void main()
{
    char* ss;
    int*  dt;
    int   i;

    ss = new char[80];    //C++におけるメモリ確保
    st = new int[20];
    //何らかの処理
    delete [] ss;    //C++におけるメモリ開放
    delete [] dt;
}

単独の変数のメモリ確保と開放

int *dt;
dt=new int;
delete dt;

配列のメモリ確保と開放

int *dt;
dt=new int[20];
delete [] dt;

宣言時と同時にメモリ確保

char* ss = new char[80];
int*  dt = new int[20];

多次元配列のメモリ確保

char (*ss)[80];
ss = new char[10][80];

多次元配列のメモリ確保(1行で書く場合)

char (*ss)[80] = new char[10][80];
↑目次に戻る

データ型認識

C++ではユーザが定義した構造体、共用体、列挙型をint型やdouble型と同じレベルの新しいデータ型として認識するため、データ型の宣言時にstruct、union、enumなどのキーワードを記述する必要はない。

例:データ型認識

#include <iostream.h>
struct hito{    //構造体
    char name[50];
    int age;
};

union cint{    //共用体
    char cdt;
    int idt;
};

enum color{red,green,blue};    //列挙型

void main()
{
    hito yamada;    //structキーワード不要
    cint dt;        //unionキーワード不要
    color mycol;    //enumキーワード不要

    yamada.age=30;
    dt.idt=0x4142;
    mycol=green;

    cout << "age=" << dec << yamada.age << endl;
    cout << "cdt=" << hex << dt.cdt << " idt=" << hex << dt.idt << endl;
    cout << "mycol=" << mycol << endl;
}

実行結果

age=30
cdt=B idt=4142
mycol=1
↑目次に戻る

参考文献

新Visual C++6.0入門 ビギナー編 part2 C++入門


戻る
LastUpdate 2001/09/09