암시적 복사생성자의 원형은
Class_name (const Class_name &); //ex) String (const String & a)
인데.
객체를 값에 의한 전달로 함수에 전달했다면,
객체를 전달인자로 받은 함수에서는 전달인자값을 암시적 복사생성자를
이용해서 값이 전달되며, 문자열은 주소값만 전달되므로
함수에서 객체가 포함하고 있는 문자열을 변경하려 한다면
const 객체이므로 변경불가가 되거나, 문자열의 주소값만을 가지므로
main 함수의 원문자열값이 변경되야하지 않나요?
그런데 방법대로 해도 함수에서 문자열변경이 제대로 되며(const 위배)
문자열을 변경해도 원본파일에는 변화가 없었읍니다.(포인터 전달 위배)
const 와 포인터를 이용함에도 함수값변경과 원본파일이 변경되지 않는
이유를 알고 싶습니다.
//ex --------------------------
#include "string1.cpp"
void test(String a);
int main(void)
{
String man("Test"); // String 객체
test(man);
cout << man << '\n';
return 0;
}
void test(String a)
{
a.get_str("Hello"); // 원본 문자열 변경 !!!
cout << a << '\n';
}
|