访问成员字段,其名称与本地变量(或参数)相同

αλε*_*λυτ 4 c++ this name-hiding

请考虑以下代码段:

struct S
{
   S( const int a ) 
   { 
      this->a = a; // option 1
      S::a = a; // option 2
   }
   int a;
};
Run Code Online (Sandbox Code Playgroud)

选项1是否等同于选项2?是否存在一种形式比另一种形式更好的情况?标准的哪个条款描述了这些选项?

Ren*_*ith 5

选项1等同于选项2,但选项1不适用于静态数据成员

EDITED:可以使用此指针访问静态数据成员.但是这个 - >成员不能在静态函数中工作.但是选项2将在静态函数中使用静态成员

例如:

struct S
{
   static void initialize(int a)
   {
      //this->a=a; compilation error
      S::a=a; 
   }
   static int a;
};
int S::a=0;
Run Code Online (Sandbox Code Playgroud)