以下代码是类的构造函数,此类具有成员
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成员首次使用此指针但是在没有此指针的情况下使用它。我不明白为什么。谢谢你的回答。
答案 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
而不是自己进行动态分配。