Tutorial 1. Hellow World

References
referenceは参照データ型で、同一データ型の値への参照を意味します。
referenceの変数宣言は以下の形式で行われます。

type & id

typeは参照を行う値のデータ型です。
idは変数を識別するidentifierです。

int i=10;
int& x=i;
int& y(i);

x、yは共にiの値へのreferenceとなります。
referenceの宣言時、初期化のparameter sizeは必ず1となります。つまり、

//int& y1;
//int& y2(i,x);


y1は初期化が行われず、y2はiとxの値に関係なく双方非合法な宣言となります。

//double& x1=i;

また、データ型が一致しない宣言も非合法となります。

x=0;

xはiの値への参照であり、この場合i=0と一致します。

Reference Parameters
parameterのデータ型にreferenceを定義することが出来ます。

nil add(int& x, int r){
    x+=r;
}


このfunctionはxへ渡された値へrを加算します。

add(y,10);

このようにaddを呼び出した場合、yは10加算されることになります。yはiのreferenceなので結果としてiが10加算されます。

nil _add(int x, int r){
    x+=r;
}

_add(y,10);


referenceでないparameterとの対比として、上例ではyの値 (ひいてはiの値)は変化しません。_addにおけるxはyの値から新たに生成されたint型であるからです。

Reference Members
classはreferenceなmemberを持つことが出来ます。

class a{
    int& x;
    a(int& r) : x(i){}
    nil add(int i){
        x+=i;
    }
};


reference memberはconstructorで必ず初期化されなければなりません。constructorについては先のチュートリアルで扱います。

a z(i);

このような宣言がなされた場合、z.xはiのreferenceとなります。

z.add(2);


z.addが呼ばれることによってxに2が加算されます。結果としてiの値は2加算されます。


Next: Tutorial 13. Constructors
Prev: Tutotrial 11. Parameters