类对象在堆区或者栈区的区别
#include <iostream>
using namespace std;
class Test {
public:
int a;
Test() {
a = 1;
}
};
int main() {
Test *t1 = new Test();
t1->a = 10;
Test *t2 = new Test();
t2->a = 5;
cout << "&t1:" << t1 << "a=" << t1->a << endl;
cout << "&t2:" << t2 << "a=" << t2->a << endl;
cout << "-------------------------------" << endl;
t2 = t1;
cout << "&t1:" << t1 << "a=" << t1->a << endl;
cout << "&t2:" << t2 << "a=" << t2->a << endl;
cout << "-------------------------------" << endl;
t1->a = 111;
t2->a = 222;
cout << "&t1:" << t1 << "a=" << t1->a << endl;
cout << "&t2:" << t2 << "a=" << t2->a << endl;
return 0;
}
/*
int main()
{
Test t1;
t1.a = 10;
Test t2;
t2.a = 5;
cout << "&t1:" << &t1 << " a = " << t1.a << endl;
cout << "&t2:" << &t2 << " a = " << t2.a << endl;
cout << "------------------------------" << endl;
t2 = t1;
cout << "&t1:" << &t1 << " a = " << t1.a << endl;
cout << "&t2:" << &t2 << " a = " << t2.a << endl;
cout << "------------------------------" << endl;
t1.a = 111;
t2.a = 222;
cout << "&t1:" << &t1 << " a = " << t1.a << endl;
cout << "&t2:" << &t2 << " a = " << t2.a << endl;
return 0;
}*/
下面是两个main的输出
第一个
&t1:0x11c1e70a=10
&t2:0x11c1e90a=5
-------------------------------
&t1:0x11c1e70a=10
&t2:0x11c1e70a=10
-------------------------------
&t1:0x11c1e70a=222
&t2:0x11c1e70a=222
第二个
&t1:0x7ffcdf7ebfac a = 10
&t2:0x7ffcdf7ebfa8 a = 5
------------------------------
&t1:0x7ffcdf7ebfac a = 10
&t2:0x7ffcdf7ebfa8 a = 10
------------------------------
&t1:0x7ffcdf7ebfac a = 111
&t2:0x7ffcdf7ebfa8 a = 222