Любая причина использовать (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

Другие вопросы по тегам