2012-06-06 2 views
0

일부 간단한 문자열 연결을 시도하기 위해 Borland C++ Builder 6을 사용하고 있습니다. 그러나 나는 흥미로운 문제라고 생각하는 것에 빠져 들었다. 이 코드를 컴파일 할 때Borland C++ Builder 6 및 문자열 연결

String word = "a" + "b" + "c"; 

그러나, 나는 "잘못된 포인터 또한"를 얻을 : 나는이 같은 간단한 작업을 수행 할 수 있어야 온라인 상태를 찾을 수 있어요

모든 오류. 각 부분을 자체 변수에 할당하고 각 부분을 함께 추가하여 원하는 출력을 얻을 수 있습니다. 그러나 이것은 예제가 얼마나 간단한지를 고려할 때 불필요하다고 생각합니다.

String a = ""; 
String word = a + "a" + "b" + "c"; 

내 질문은 이것이다 :

원하는대로 내가 일을 위의 비슷한을 얻을 수 있었던 유일한 방법은이 일을하는 것입니다 왜 것 두 번째 예제 작업 잘 아니지만 첫 번째?

답변

2

이유는 "a"의 유형 char* 때문이다 (즉 : 포인터 - 투 - 문자), 당신은 당신이 허용되지 않는, 함께 포인터에 추가하려는

"a" + "b" 

을 쓸 때 의미한다. 당신이 String 유형을 만들 때

operator+가 과부하 때문에

String a = ""; 
a + "b" 

포인터 - 투 - 문자 String에, 연결 자체 (고화질)을 가지고 추가합니다.

+0

나는 본다. 기본적으로이 방법으로 문자열을 추가하려면 기본적으로 두 번째 예제를 사용해야합니다. 비록 내가 이상한 행동으로 보더라도 (보통 나는 C# 프로그래머이다) –

+1

@ hawk4031 - 맞다. 익명의 String 객체를 사용할 수도 있습니다 :'String word = String ("a") + "b";' – Attila

0

나는 확실히 모르겠다. 그러나 이것은 아마도 논증 때문일 것이다. 첫 번째 줄의 "a"는 char*이므로 다른 문자열을 추가해도 결과는 char*이되며 직접 String 개체에 할당 할 수는 없습니다. 두 번째 경우는 첫 번째 인수가 String 유형 인 경우 모든 결과가 문자열이기 때문에 할당이 가능하다는 것을 보여줍니다.

관련 문제