C++ (C も同様) で変数を参照渡しする通常の方法は次のとおりです。
void _someFunction(dataType *name){ // dataType e.g int,char,float etc.
/****
definition
*/
}
int main(){
dataType v;
_somefunction(&v); //address of variable v being passed
return 0;
}
しかし、驚いたことに、参照によってオブジェクトを渡すときに、オブジェクト自体の名前が目的を果たし(&
シンボルは不要)、関数の宣言/定義中に*
引数の前にシンボルが必要ないことに気付きました。次の例は、それを明確にする必要があります。
// this
#include <iostream>
using namespace std;
class CDummy {
public:
int isitme (CDummy& param); //why not (CDummy* param);
};
int CDummy::isitme (CDummy& param)
{
if (¶m == this) return true;
else return false;
}
int main () {
CDummy a;
CDummy* b = &a;
if ( b->isitme(a) ) //why not isitme(&a)
cout << "yes, &a is b";
return 0;
}
この特別な扱いが class で行われる理由を理解するのに問題があります。ほとんどクラスのような構造でさえ、このようには使用されません。配列の場合のように、オブジェクト名はアドレスとして扱われますか?