令人困惑的C++代码涉及*this?

mah*_*yar 4 c++ operator-overloading this

有人可以解释这段代码吗?我不明白第3行:

MyString MyString::operator+(const MyString &str)
{
    MyString ss(*this); //----> explain this part
    ss += str;
    return ss;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

tem*_*def 11

这段代码:

MyString ss(*this);
Run Code Online (Sandbox Code Playgroud)

说"声明一个MyString名为的新变量ss,并将其初始化为*this.".在成员函数内部,this是指向接收器对象(成员函数正在作用的对象)的指针,因此*this是对接收器对象的引用.因此,您可以将其读作"创建一个新MyString的被调用者ss并且是接收者对象的副本".

这里所使用的成语正在实施operator +中的条款operator +=.想法是制作接收器对象operator +=的副本,用于将参数添加到副本,然后返回副本.这是一种广泛使用的技巧,它简化了独立运算符的实现,并实现了相应的复合赋值运算符.

希望这可以帮助!