我已经学到了一些指导原则,所有人都告诉我通过引用传递一个变量应该总是使用const,比如func(const T& a)
。我知道CList
中的第二个模板参数是ARG_TYPE
。与CList::AddTail(ARG_TYPE item)
类似,会使用ARG_TYPE
作为参数类型。
我看到msdn中的示例代码显示我使用non-const
Type作为其第二个模板参数。是否有理由将此non-const
类型作为参数类型?
CList<string, &string> a;
vs CList<string, const &string> b;
任何建议都会有所帮助。感谢。
答案 0 :(得分:4)
没有const的C ++编程就像没有安全带的驾驶一样。
1.它可以保护您免于更改无意更改的变量,
2.它可以防止您进行意外的变量分配
3.通过const引用接受参数可以获得通过引用传递的效率和传递值的安全性
同时,编译器可以生成更高效的代码,因为它确切地知道变量/函数的状态。如果你正在编写严格的C ++代码,这很好。
仅供您参考我在本文中阅读了const的不便之处,但强烈建议使用const-correctness
http://duramecho.com/ComputerInformation/WhyHowCppConst.html