java写多了,发现不懂C++了··
java里面的假设有个类的实例是A,我用B=A语句的话,改变B里面的实例变量的值,A对应的实例变量的值也会改变,就是说A B实质都是指向同一块内存的(我就是想要这个效果)
C++里面,用引用的话应该能达到相同的效果吧,但是那个结果出乎我意料:
代码这样的时候:
QList<int> list_1;
list_1<<1<<2<<3;
qDebug()<<list_1;
QList<int> list_2;
list_2 = list_1;
list_2<<4;
qDebug()<<list_2;
qDebug()<<list_1;
输出时:
(1, 2, 3)
(1, 2, 3, 4)
(1, 2, 3)
也就是说list_1跟list_2不是指向同一块内存的,但是Qt文档里面对于QList的=的说明是:
QList<T> & QList::operator= ( const QList<T> & other )
Assigns other to this list and returns a reference to this list.
就是返回引用啊···那么为什么我改变引用的值,本体不会跟着改变呢···无法理解。
ps:
如果代码改成这样:
QList<int> list_1;
list_1<<1<<2<<3;
qDebug()<<list_1;
QList<int> *list_2;
list_2 = &list_1;
*list_2<<4;
qDebug()<<*list_2;
qDebug()<<list_1;
输出就变成:
(1, 2, 3)
(1, 2, 3, 4)
(1, 2, 3, 4)
也就是list_1跟list_2指向同一块内存了,但是这样写··好不美观啊····