[완료]C++ std::string, string literal 간단한 질문 입니다 :-)
글쓴이: shout_maya / 작성시간: 금, 2008/01/11 - 4:16오후
C++를 막 공부하기 시작 했습니다.
std::string hello = "hello";
std::string hello_world = hello + "world" + "!";
이 문장은 잘 컴파일이 되죠... string객체에 대한 + 연사자는 left-associative 기 때문에
std::string 타입 + string literal 타입 이기때문에..
그런데
std::string hello = "hello, " + "world!";
요건 안되는데 그 이유가 string literal + string literal 이라서 인데요
std::string 타입 + string literal 타입은 유효 한데
왜 string literal + string literal 은 유효하지 않을까요?
제가 책을 제대로 안 본 것인지, 내부적으로 그렇게 하기로 한 이유가 있는지 잘 모르겠어요 :-)
Forums:
string literal의 type은
string literal의 type은 const char*입니다.
string literal + string literal이 되려면 operator+(const char*, const char*)가 있어야하는데 그게 없기 때문에 안되는 것입니다.
포인터와 포인터의 +
포인터와 포인터의 + 연산은 정의되지 않습니다.
C++의 문자열
C++의 문자열 리터럴은
const std::string
이 아니라const char*
로 평가됩니다. 윗분 말씀대로 포인터와 포인터의 + 연산은 정의되지 않으므로"hello" + "world"
는 컴파일이 되지 않습니다.댓글 달기