gpt4 book ai didi

c++ - 何时在成员函数中使用 "this"指针

转载 作者:行者123 更新时间:2023-11-30 02:42:17 24 4
gpt4 key购买 nike

<分区>

背景:

我正在阅读别人编写的代码,而且我对 C++ 编程还很陌生。当我查看那个人编写的类和相应的成员函数时,我对 this 指针的用法感到困惑。在某些成员函数中使用 this 而在其他成员函数中则不使用。

为什么会这样?

我知道对于最近开始使用 C++ 的人来说,这是一个很常见的困惑。

代码片段:

类:

class InitTable {
public:
InitTable();
virtual ~InitTable();

void clearTable();
void addEntry(std::string sumoID);
void deleteEntry(std::string sumoID);
InitEntry* getEntry(std::string sumoID);
IPv4Address getEntryIPaddress(std::string sumoID);

protected:
std::map<std::string, InitEntry*> table;
};

成员函数(使用 this):

void InitTable::clearTable()
{
this->table.clear();
}

成员函数(没有this):

void InitTable::deleteEntry(std::string sumoID)
{
InitEntry* ie = getEntry(sumoID);
if (ie != NULL)
{
table.erase(sumoID);
delete ie;
}
}

问题:

请注意,在 void InitTable::clearTable() 中,使用了 this->table.clear() 并且在 void InitTable::deleteEntry() 中, table.erase() 只有 table 没有 this 被使用。

void InitTable::clearTable()
{
table.clear(); // no "this"
}

这里有什么技巧?如果改用 this->table.erase() 会发生什么行为。

void InitTable::deleteEntry(std::string sumoID)
{
InitEntry* ie = getEntry(sumoID);
if (ie != NULL)
{
this->table.erase(sumoID); // "this" added
delete ie;
}
}

正如我所说,我有点菜鸟,所以用最少的例子进行全面的描述会很有帮助。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com