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