Я унаследовал код Qt, в котором сигналы обычно объявляются только с типами: например,
class One : public QObject
{
Q_OBJECT
signals:
gotEvent(QString message);
}
class Two : public QObject
{
Q_OBJECT
slots:
handleEvent(QString const &message);
}
QObject::connect(one_instance, &One::gotEvent, two_instance, &Two::handleEvent);
Когда я вызываю emit gotEvent(string);
из класса One (при условии one_instance и two_instance находятся в одном потоке), копируется ли строка, или она передается по ссылке в handleEvent ()?
Другими словами, зависит ли константность строки от объявления сигнала или только объявление слота? Я предполагаю, что способ, которым он объявлен в сигнале, не имеет никакого значения, потому что сигнал не является определенной функцией, но я хотел бы знать наверняка.