编码中的过时性的确切含义是什么?

pra*_*ran 3 c++ coding-style compiler-warnings visual-studio

我正在使用Visual Studio2017。在C ++中,我尝试将指针分配给'this'指针。它显示编译器错误为“分配给'this'(过时)“。过时意味着将某些东西添加到它不存在的时期中,例如罗马皇帝检查计算机。所以编译器警告也是这样。或者在编码“时代错误”这个词时有什么具体含义?

And*_*pov 7

不久之前,this可以为指针分配值。我在Cfront编译器的代码中遇到了这样的任务。我在本说明中写道:庆祝第一个C ++编译器成立30周年:让我们查找其中的错误。例子:

expr.expr(TOK ba, Pexpr a, Pexpr b)
{
  register Pexpr p;

  if (this) goto ret;
  ....
  this = p;
  ....
}

inline toknode.~toknode()
{
  next = free_toks;
  free_toks = this;
  this = 0;
}
Run Code Online (Sandbox Code Playgroud)


rus*_*tyx 5

过时了很久以前就可以了,但现在已经不行了。

从C ++ 98开始,this是一个右值,因此无法分配(即,不能出现在赋值运算符的左侧)。参见§9.3.2 this指针:

在非静态(9.3)成员函数的主体中,关键字this是一个非左值表达式,其值是为其调用该函数的对象的地址。

从C ++ 11开始,this被指定作为一个prvalue。