関数をQtConcurrent::run
実行して値を参照渡ししていましたが、値のメモリアドレスが異なります。
しかし、ポインタで値を渡すと、アドレスは同じです! 私はそれを理解することはできません。私は何かが恋しいですか?
これがコードです。
void ptr(QString* s)
{
qDebug() << "pass by ptr: " << s;
}
void ref(QString& s)
{
qDebug() << "pass by ref: " << &s;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString str;
QFuture<void> f1 = QtConcurrent::run(ptr, &str);
f1.waitForFinished();
QFuture<void> f2 = QtConcurrent::run(ref, str);
f2.waitForFinished();
qDebug() << "address of str: " << &str;
return a.exec();
}
出力:
pass by ptr: 0x28fefc
pass by ref: 0x525de4
address of str: 0x28fefc