这是我从来没有完全与常量-REF有一件事,我真的希望有人能向我解释。
当调用另一个函数的内部函数,我得到的常量,裁判是最好的方式传递,我不打算乱动栈对象时。 例如:
void someInnerFunction(const QString& text) {
qDebug() << text;
}
void someFunction() {
QString test = "lala";
....
someInnerFunction(test);
}
到目前为止好,我猜。 但怎么样的信号? 是不是有自带的传递引用任何风险? 虽然它的const
。 这感觉就像我一直在阅读所有关于常量-REF的文档,但我仍然觉得有点冒险,因为我把它理解为“发送到一个对象的引用,并保持其const
”。 如果它是指对象超出范围是什么?
例如:
void someFunction() {
connect(this, SIGNAL(someSignal(const QString&)), this, SLOT(someSlot(const QString&)));
QString test = "lala";
emit someSignal(test);
// doesnt test go out of scope here? and since im not using queued connection the QString object doesnt get copied.
}
void someSlot(const QString& test) {
qDebug() << test; // will this work?
}
究竟发生什么事吗? 我经常使用const的,裁判的函数调用,我只是想访问对象,但不能改变它。 但怎么样的信号? 大多数的信号似乎都在Qt的文档常量-REF PARM,但它是如何工作的?