这个指针在构造函数中

时间:2012-10-19 17:45:02

标签: c++ class this

以下代码是类的构造函数,此类具有成员

int               ** busyhours      ;

构造函数

Instructor::Instructor ( int id , string name )
{
  this->id   = id   ;
  this->name = name ;

  // initialize busyhours
  this->busyhours = new int * [DAYS_WORKING] ;
  for ( int i = 0 ; i < DAYS_WORKING ; i++ )
  {
       busyhours[i] = new int[HOURS_PER_DAY] ;
       for ( int j = 0 ; j < HOURS_PER_DAY ; j++ )
        busyhours[i][j] = 0 ;
  }
}

busyhour成员首次使用此指针但是在没有此指针的情况下使用它。我不明白为什么。谢谢你的回答。

3 个答案:

答案 0 :(得分:5)

this是隐式的,仅在参数与成员变量

具有相同名称时才需要

答案 1 :(得分:2)

快速阅读this article,应该清楚一些事情。

一般来说,我发现使用this-> c ++更多是个人偏好的问题,但有些情况下你可以使用它来消除函数参数和成员变量之间的歧义。在您的示例中,我没有看到为什么this->被使用一次然后不再使用的任何特定原因。这可能是因为this->.在视觉工作室中提供了智能弹出窗口,这可能只是第一次必要时提醒作者成员变量被调用的内容。

答案 2 :(得分:1)

@WhozCraig有一个大致正确的想法,至少在我看来 - 但请注意,在这种情况下,你需要重命名参数。您还可以使用new的值初始化来消除显式归零数据,只留下:

Instructor::Instructor ( int id , string name )
   : id(id), name(name), busyhours(new int *[DAYS_WORKING])
{
  for (int i = 0; i < DAYS_WORKING; i++)
       busyhours[i] = new int[HOURS_PER_DAY]();
}

当然,您几乎肯定会抛弃所有这些,并使用std::vector而不是自己进行动态分配。