아래에 제시된 두 연산자 오버로드 함수에 대한 도움이 필요합니다. 함수 정의에서 할당을 실제로 사용하지 않고 어떻게 구현할 수 있는지 확신 할 수 없습니다. 연산자 + 내 .cpp 파일에복합 할당 및 연산자 오버로드 추가
코드 :
String1 = String2 + String3 + String4;
String1.Print();
String2 += String3;
String2.Print();
: MAIN.CPP에서
MyString& MyString::operator+=(const MyString& rhs)
{
delete [] String;
String = new char[rhs.Size];
String = String + rhs.String;
return *this;
}
전화 :
MyString& MyString::operator +(const MyString& rhs)
{
delete [] String;
String = new char[rhs.Size];
Size = rhs.Size;
// needs to be a loop for cascading +
// so that String1=String2+String3+String4 will work
for(int i = 0; i < rhs.Size+1 ; i++)
{
// String[i] + rhs.String[i]; ???
}
return *this;
}
코드 + = .cpp 파일에서 연산자
.cpp 파일 코드가 잘못되었다는 것을 알고 있습니다. 약간의 통찰력이 좋을 것입니다!
(즉, 실제로 기존의 버퍼를 말한다)의 크기를 업데이트하고
new_buffer
을 해제, 이전 및 새 버퍼를 교환 할 수 있습니다 문자열에 추가하려고하기 전에 문자열을 추가하지 마십시오 ... –문자열을 추가하려면 + 및 + =가 실제로 필요합니까? –
두 개의 문자열 (String1 = String2 + String3 + String4가 작동하는)을 연결하려면 + 연산자가 필요하고 String1 + String2 = String1 = String1 + String2의 의미로 작동하려면 + =가 필요합니다. 명확한 예를 들면 – user1363061