2014-04-17 3 views
2

참조가 아닌 점을 알고 있습니다. reference는 객체가 아닙니다. 그래서 const 참조가 없습니다.const가있는 템플릿 함수 매개 변수

template <typename T> //take e as the node insert the left child of the tree. 
BinNodePosi(T) BinNode<T>::insertAsLC(T const & e) { return lChild = new BinNode(e, this); } 

나는 그것의 매개 변수를 혼란 스러워요 : T의 CONST & 전자 우리가 int const &rl = ... 쓸 수 없습니다

const int ci = 1024; 
const int &rl = ci; 

하지만 오늘, 나는 이진 트리 소스 코드를 배울입니다. 왜 안돼 const T & e? 나는 후자가 맞다라고 생각한다. 아마 나의 질문은 여기에 게시하는 것이 너무 간단하다. 수학과 달리 연구 수준과 연구 수준에 각각 두 가지 측면이 있습니다 : MathOverFlow와 math.stackexchange .. 나는 stackoverflow를위한 주니어 사이트를 찾을 수 없습니다. 그래서 여기에 게시합니다. 용서해주세요. 매우 감사합니다.

답변

5

const왼쪽에 왼쪽에 적용됩니다. 유형 지정자 시퀀스의 첫 번째 항목 인 경우가 아니면 다음 항목에 적용됩니다.

따라서 T const & e은 정확히 const T & e과 같습니다. 생각하고있는 것처럼 보이는 불법적 인 경우는 T & const e입니다. 마찬가지로 변경 가능한 객체에 대한 불변 포인터는 T * const e으로 선언됩니다.

개인적으로 문법의 특별한 경우이므로 개인적으로는 const을 넣는 것을 피합니다.