Любая причина использовать (MFC) CList<T, T &> вместо CList<T, const T &>?
Я узнал некоторые рекомендации, которые все говорят мне, что передача переменной по ссылке должна всегда использовать const, например func(const T& a)
, И я знаю второй параметр шаблона в CList
это ARG_TYPE
, подобно CList::AddTail(ARG_TYPE item)
будет использовать ARG_TYPE
как его тип параметра.
Я видел примеры кода в MSDN показывает, что он использует non-const
Введите в качестве второго аргумента шаблона. Любые причины, чтобы предпочесть это non-const
Тип как тип параметра?
CList<string, &string> a;
против CList<string, const &string> b;
Любое предложение будет полезно. Благодарю.
1 ответ
Программирование на C++ без const похоже на вождение без ремня безопасности.
1. Это защищает вас от изменения переменных, которые не предназначены для изменения,
2. Он защищает вас от случайного назначения переменных
3. Принятие аргументов по константной ссылке дает вам эффективность передачи по ссылке с безопасностью передачи по значению
В то же время компилятор может генерировать более эффективный код, потому что он точно знает, какое состояние переменной / функции будет всегда. Если вы пишете жесткий код на C++, это хорошо.
Просто для справки я прочитал в этой статье неудобства const, но настоятельно рекомендуется использовать const-правильность
http://duramecho.com/ComputerInformation/WhyHowCppConst.html