|
안녕하세요...또 올립니다...
빌더에 대한 질문은 거의 않구...어이없는 것들만 올리는 군요....^^
여튼....이번 건은요....
String& String::operator+(const char* s)
{
int max = strlen(s);
len = strlen(str);
for(int i=0; i<=max; i++)
*(str+(len+i)) = *(s+i); //요기요..
len = strlen(str);
return *this;
}
위와 같은 메서드 인데요.....
String 의 인스턴스는 char * str 과 int len 를 가집니다.
생성자에서 str은 동적 배열로 잡아서 초기화시킵니다.
제가 알기론 포인터와 배열의 관계에서....
*(ptr + i) == arr[i] 의 관계인걸로 알고 있습니다.
근데 그렇게 되면 "요기요" 부분에서 len+i 의 변수의 값이 맨처음 생성자에서 생성했던
배열의 크기보다 초과해 버리는것 같은데.....
컴파일하니 제대로 됩니다. 근데 배열의 크기를 초과해서 포인터를 매길수 있나요??
제가 잘못알고 있는 것인지....
좋은 답변 부탁드립니다....
ps.최대한 구체적으로 질문드릴려고 했는데...제대로 됐는지 모르겠군요...^^
|