参考变量

时间:2017-07-06 11:38:30

标签: c++ reference

我对C ++中的引用感到困惑。谁能解释一下这个:

    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?
}

此外,当我删除&并将此功能设为string getName时,代码将无效。

1 个答案:

答案 0 :(得分:2)

以防

 int & b = a;

ba的引用,inta两个名称都可以为b类型的数据分配内存。

以防

 int & c = &a;

您正在尝试将为a分配的内存地址 - 一元&的结果 - 保存到int & c ...这会导致错误。

方法

 string & getName( void )

返回对string的引用,因此string & namemain中的变量)将提供对私有类成员string name;的内存的访问权限