Тип аргумента для сигнала и слота Qt, имеет ли значение задание отступников?

Для сигнала и слота типа ниже

signals: void textChanged(const QString &); public slots: void setText(const QString & text) 

тип аргумента textChanged и setText, похоже, работает нестабильно для const и & . Имеет ли постоянная и ссылочная квалификация какую-либо разницу по сравнению с использованием только QString?

 QObject::connect(a,SIGNAL(textChanged(QString)),b,SLOT(setText(QString))); QObject::connect(a,SIGNAL(textChanged(const QString &)),b,SLOT(setText(const QString &))); 

EDIT: я не заметил окно вывода, отображающее сообщения об ошибках, когда в SIGNAL или SLOT используется несовместимый тип. Я думал, что механизм слота сигнала способен обнаруживать ошибку типа аргумента во время компиляции.

Qt проверяет нормализованную подпись , что означает

Нормализация уменьшает пробелы до минимума, при необходимости перемещает «const» на фронт, удаляет «const» из типов значений и заменяет ссылки const со значениями.

Отказ от ответственности: мой qt довольно ржавый, но механизм сигнала / слота по-прежнему остается только вызовом функций C ++. Если механизм сигнала / слота фактически копирует объекты во внутреннее хранилище, мои извинения (вам нужно проверить страницы Qt, есть большой в сигналах / слотах afaik), поскольку биты ниже будут только релевантными в контексте C ++, а не в контексте C ++ + Qt.

Если вы не укажете ссылку, строка будет скопирована (и наличие константы не имеет значения, любые внесенные в нее изменения останутся в функции).
Если вы оставите в ссылке, но выберете const, вы разрешите методу изменять строку, которую вы ему даете. Они оба работают, но выполняют разные вещи с передаваемым вами объектом (количество копий / возможность сохранения изменений).

Предлагаю вам прочитать следующие ресурсы:

(по корректности const) https://isocpp.org/wiki/faq/const-correctness

(по ссылкам) https://isocpp.org/wiki/faq/references

чтобы точно понять, что такое прохождение параметра и как void foo(const A&) / void foo(const A) / void foo(A&) / void foo(A) все разные.

  • Как изменить тип данных DataColumn в DataTable?
  • Почему streamи C ++ используют char вместо unsigned char?
  • Типы в MySQL: BigInt (20) против Int (20)
  • Взаимодействие Java Raw Type и generics
  • Являются ли HLists не более чем сложным способом написания кортежей?
  • Что такое типы POD в C ++?
  • Преобразовать строку в тип C #
  • Типы и classы переменных
  • Итерация по интерфейсу
  • Есть ли способ отключить перегрузку функций в Postgres
  • Какой тип данных MySQL следует использовать для широты / долготы с 8 десятичными знаками?
  • Interesting Posts

    Как быстро и эффективно стереть жесткий диск Win7 x64

    Как создать тень для кнопки

    Совместное использование локальной сети Windows XP: заблокирован 1 ГБ .zip-файл; Видя «Отказано в доступе» на копии?

    Как найти все ссылки / страницы на веб-сайте

    Как заставить cron запускать приложение Java GUI?

    Как преобразовать мою программу Java в файл .exe?

    Цветной вывод консоли в продуктах Intellij

    От многих до многих сопоставление с дополнительными полями в Fluent API

    bootstrap 4 nav не отображает гамбургер при изменении размера

    Как получить сеть 1000 Мбит / с с использованием кроссового кабеля

    Создайте функцию Oracle, которая возвращает таблицу

    Как доказать, что провайдер блокирует входящий трафик на некоторых портах?

    Как определить процесс создания / завершения процесса win32 в c ++

    Нажмите внешнее меню, чтобы закрыть в jquery

    Gcc автоматически инициализирует статические переменные до нуля?

    Давайте будем гением компьютера.