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指向同一块内存了,但是这样写··好不美观啊····