【问题标题】:Passing value to const reference parameter?将值传递给 const 引用参数?
【发布时间】:2014-04-14 00:59:16
【问题描述】:

我无法在此处或通过 Google 找到类似的问题,可能是因为我不知道我问的问题是否正确,所以不确定标题是否正确。但我正在使用如下代码:

Foo * foo = new Foo();
add(*foo); //Couldnt find any similar questions on this syntax?

void add(const Foo & foo){

//What exactly is foo here? How can i manipulate its members, foo. or foo-> ?

} 

【问题讨论】:

    标签: c++ pointers reference constants


    【解决方案1】:

    'foo' 是一个常量引用。您可以通过 foo.fred、foo.method() 等方式访问其成员,但不能更改任何数据成员或调用任何非 const 方法。

    【讨论】:

      【解决方案2】:

      add 方法中的变量foo 是一个常量引用。在它不复制对象的意义上,它的行为就像一个指针:您与它交互就好像它是对象本身一样。与指针不同,引用不能是NULL,也不能重新分配。您可以使用点 . 运算符而不是 -> 运算符与之交互。

      void add(const Foo & foo){
          cout << foo.first_member << endl;
          foo.const_member_function();
      }
      

      由于foo 是一个常量引用,您可以读取foo 的成员,但不能分配它们。此外,foo 引用上的任何成员函数调用都仅限于显式标记为 const 的函数。

      只要foo 不是NULL,就可以使用取消引用的foo 调用add。通过取消引用 NULL 指针来进行引用是未定义的行为。

      【讨论】:

      • 它的行为就像对象本身,根本不像一个指针。
      • @EJP 我澄清了我的观点,即引用行为类似于指针。
      猜你喜欢
      • 2014-09-09
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多