0
私はC++のリファレンスについて混乱しています。私は&
を削除して、このような機能は、コードが動作しませんstring getName
作るときにも変数への参照
class Dog
{
public:
Dog(void) {
age = 3;
name = "dummy";
}
void setAge(const int & a) {
age = a;
}
string & getName(void) {
return name;
}
void print(void) {
cout << name << endl;
}
private:
int age;
string name;
};
int main(void) {
Dog d;
string & name = d.getName(); // this works and I return reference, so the address of name will be the same as address of name in Dog class.
int a = 5;
int & b = a; // why this works? by the logic from before this should not work but the code below should.
int & c = &a // why this does not work but the code above works?
}
:誰も私にこれを説明してもらえます。
は*この作品、私は参照を返すプライベートクラスメンバーのメモリへのアクセスを提供します名前のアドレスはDogクラスの名前のアドレスと同じになります。参考文献をポインタと見なさないでください。彼らはそれらのように動作し、それらと一緒に実装することができますが、ポインタではありません。それらは参考文献です。 – NathanOliver
良い読書:https://stackoverflow.com/questions/57483/what-are-the-differences-between-a-pointer-variable-and-a-reference-variable-in – NathanOliver
私は彼らが指摘しているとは言わなかったしかし、両方の変数のアドレスは同じです。main functonの変数名は、Dogクラスの変数名のアドレスである値を持っています。 – stilltryingbutstillsofar