参照
C++の「参照」とは、アドレス値を変更できないポインタで、自動的に*演算子が適用されるもの、とあります。以下の例のようにポインタと似た使い方ができます。「アドレス値を変更できない」という特徴のため、元の変数(下記ではdt)の別名(エイリアス)のような役割を持たせることができます。
int dt = 100;
int& r = dt; // 参照
int* p = &dt; // ポインタ
std::cout << "r=" << r << ", p=" << *p << std::endl;
また、ポインタと同様に関数の引数に用いることもできます。ただし、参照を引数に取る場合、&演算子を用いずに「ref( r );」などと直接記述できるため、値渡しと見かけ上の区別が付けにくくなります。そこで、やはり「引数の値を変更する場合は、ポインタ渡しを利用し、変更がない場合はそれを明確にするため、constを付ける」というルールが用いられることが多いようです。
void ref(const int& dt)
{
std::cout << "dt=" << dt << std::endl;
}
最後は少し変な例。参照と言っても(アドレス値を変えようとしなければ)ポインタと同じですので、以下のような妙な記述も出来てしまいます。どう役に立つのかは不明ですが…。
int& myfunc()
{
static int ans;
return ans;
}
int main(int argc, const char * argv[])
{
myfunc() = 200;
std::cout << "myfunc=" << myfunc() << std::endl;
}
参考URL
この記事は役に立ちましたか?
- EnglishWorm.com
- SinglesFan.com
- LmLab.net
- サイトマップ
- 運営者について