相关疑难解决方法(0)

为什么引用在C++中不可重用

C++引用有两个属性:

  • 他们总是指向同一个对象.
  • 他们不能是0.

指针是相反的:

  • 他们可以指向不同的对象.
  • 他们可以是0.

为什么C++中没有"不可为空,可重复的引用或指针"?我想不出为什么参考不应该是可重复的一个很好的理由.

编辑: 问题经常出现,因为我通常使用引用,当我想确保"关联"(我在这里避免使用"引用"或"指针")永远无效.

我认为我从没想过"这个引用始终指的是同一个对象".如果引用是可重用的,那么仍然可以得到当前的行为:

int i = 3;
int& const j = i;
Run Code Online (Sandbox Code Playgroud)

这已经是合法的C++,但毫无意义.

我重申我的问题: "'引用的背后什么原因是对象'设计?为什么引用始终是同一个对象,而不是仅当声明为const时才被认为是有用的?"

干杯,菲利克斯

c++ pointers language-design reference

68
推荐指数
6
解决办法
2万
查看次数

在具有参考字段的类上放置新的

这是来自 C++20 规范 ( [basic.life]/8 )的代码示例:

struct C {
  int i;
  void f();
  const C& operator=( const C& );
};

const C& C::operator=( const C& other) {
  if ( this != &other ) {
    this->~C();              // lifetime of *this ends
    new (this) C(other);     // new object of type C created
    f();                     // well-defined
  }
  return *this;
}

int main() {    
  C c1;
  C c2;
  c1 = c2;   // well-defined
  c1.f();    // well-defined; c1 refers to a new object of type …
Run Code Online (Sandbox Code Playgroud)

c++ language-lawyer c++20 stdlaunder

11
推荐指数
2
解决办法
329
查看次数