c++中this指针

    科技2025-05-23  39

    c++类中this指针两种用法对比

    class Base{ public: Base& re(){ return *this; } int value; }; int main() { Base* base1=new Base(); Base base2=base1->re(); cout<<&base1<<endl; cout<<&base2<<endl; base1->value=10; cout<<&base1->value<<endl; cout<<&base2.value<<endl; cout<<base1->value<<endl; cout<<base2.value<<endl; delete base1; cout<<&base2.value<<endl; cout<<base2.value<<endl; return 0; }

    输出:

    0075F844 0075F838 00CF0578 0075F838 10 0 0075F838 0

    类中函数返回本类的&,即return *this,会返回一个该类的新对象,(深拷贝)

    #include <iostream> #include <vector> using namespace std; class Base{ public: Base* re(){ return this; } int value; }; int main() { Base* base1=new Base(); Base* base2=base1->re(); cout<<&base1<<endl; cout<<&base2<<endl; base1->value=10; cout<<&base1->value<<endl; cout<<&base2->value<<endl; cout<<base1->value<<endl; cout<<base2->value<<endl; delete base1; cout<<&base2->value<<endl; cout<<base2->value<<endl; return 0; } 00F9F758 00F9F74C 0122F9E8 0122F9E8 10 10 0122F9E8 -572662307

    若类内函数返回本类的指针*,即return this,则会产生一个对象副本,类中变量是浅拷贝。

    Processed: 0.012, SQL: 8