在C ++中更改'this'指针的地址

时间:2019-12-11 05:18:34

标签: c++ pointers lvalue

我知道C ++中的指针变量中包含的地址可以更改。但是,我无法更改存储在this指针中的地址。在下面给出的代码中,它给出了赋值this = &source的错误:

  

需要左值作为赋值的左操作数

我从here中了解到有关左值的信息。这使我得出结论:this不符合有效的lvalue的条件,但是为什么不呢?

#include<iostream>
#include<stdio.h>
#include<string>

using namespace std; 

class foo{
public :
    char *name;
    void changeAddress(foo &source);
};

void foo::changeAddress(foo &source){
    //this = 0x7ffd70609fe8
    // &source = 0x7ffd70609ff0
    this = &source;
}

int main(){
    foo f1;
    foo f2 ; 
    f1.changeAddress(f2);
    return 0;
}

0 个答案:

没有答案