[C++] char * & a = char * b 이런 문법이 있나요?
글쓴이: lbm200 / 작성시간: 목, 2016/03/31 - 8:56오후
다른게 아니라 템플릿 클래스부분을 보고 있는데
실제 매개변수와 형식 매개변수 데이터 형이 다른데 프로그램 실행에 이상이 없습니다. 예를들어,
아래처럼, 사용자 정의 템플릿 클래스 Stack을 선언해 줍니다.
Stack<const char *> st;
그리고 프로그램 중간에서 st의 멤버 함수 push를 호출하면서 const char * 를 전달합니다.
st.push( const char * s);
push의 함수 머리는 다음과 같습니다.
template <typename Type>
bool Stack<Type>::push(const Type & item) {... }
그러면, Type부분이 const char *로 변경되어야 하니까 push 함수 머리는 다음과 같이 변경 되어야 합니다.
bool Stack<const char *>::push(const const char * & item) {... }
결국 push 를 호출할때 실제 매개변수가 형식 매개변수로 대입되는 상황은 아래와 같아야 합니다.
const const char * & item = const char * s
도대체 이게 무슨 문법인지 모르겠습니다. 원래 C++ 에 이런 문법이 있나요??
Forums:
다음의 코드를 이해하신다면,
다음의 코드를 이해하신다면, 이해가갈것입니다.
감사합니다.
포인터 참조에 대한 이해가 되었습니다.
포인터 참조로 받을때의 코드 작성 편의성에 대해서 말씀하신걸로 이해 됩니다.
아직 많이 부족하다는 걸 느꼈습니다. 감사힙니다.!!
char const *
const
타입 한정자는 한정하는 타입이 타입 지정자의 맨 앞에 오는 타입일 경우, 그 한정하는 타입 앞에 놓을 수도 뒤에 놓을 수도 있습니다. 둘 다 올바른 표현이며 동일하게 취급합니다. 예를 들어,const char *
와char const *
둘 다 올바른 문법이며 동일한 타입을 표현합니다: pointer to const char.앞에 놓는 형태가 좀 더 관용적이지만, 템플릿의 복잡한 타입을 이해하려할 때는 뒤에 놓는 형태가 쉬울 수 있습니다. 보여주신 선언들을 뒤에 놓는 형태로 표현하면 다음과 같습니다:
따라서, 템플릿 패라미터
Type
을char const *
로 대체하면 다음처럼 됩니다:char const * const &
는 reference to const pointer to const char 형을 의미합니다. 따라서,push()
함수에는char const *
(pointer to const char)와char const * const
(const pointer to const char) 형의 인자를 넘겨줄 수 있습니다.감사합니다.
참고하는 서적이 입문서이고, 그 부분에 이르기까지 어떠한 관련문법도 언급하지 않아서 좀 당황스럽습니다.
말씀하신 부분의 설명이 없어서 이해가 안 되었습니다.
많이 부족함을 느낍니다.
가르쳐 주셔서 감사합니다!
댓글 달기