在C ++中,每当我们通过一个对象调用成员函数时,它会隐式地将一个参数传递给成员函数说 classname * const this 例如:
void SetID(int nID) { m_nID = nID; }
成为:
void SetID(Simple* const this, int nID) { this->m_nID = nID; }
现在在下面的例子中
#include <iostream>
using namespace std;
class Test {
private:
int x;
public:
Test(int x = 0) { this->x = x; }
void change(Test* t) { *this = *t; }
void print() { cout << "x = " << x << endl; }
};
int main() {
Test ctest1(10);
Test* ptest = new Test(20);
ctest1.change(ptest);
ctest1.display();
return 0;
}
因此我们知道内部ctest1.change将传递此指针,即const (Test * const ptr)。那么我怎么可能将“this”改为指向其他一些对象。在abv示例中,这现在指向ptest
还想知道这和*这个
有什么区别答案 0 :(得分:1)
那么我怎样才能将“this”更改为指向其他对象
你不能;它始终指向调用成员函数的对象,并且无法更改。正如你所说,它表现得(或多或少)像Test * const
类型的额外参数 - const
意味着你无法将指针改为指向其他任何东西。
在abv示例中,现在指向ptest
不,不。 *this = *t
修改this
指向的对象的值,并将其重新分配给t
个点。之后它仍指向同一个对象(带有新值)。
还想知道
之间的区别this
和*this
this
是指向对象的指针; *this
取消引用访问对象本身的指针。
答案 1 :(得分:0)
它调用赋值运算符。您没有将this
更改为指向其他对象,而是更改this
指向的内存。
答案 2 :(得分:0)
如何更改此指向其他内容?
用简单的英语::你不能这样做,你不应该这样做。
原因是&#34;这个&#34;对于X类是&#34; X * const this&#34;。