그래서 질문은 :C++ : getter는 직접 액세스하지 않고 동적으로 할당 된 배열에 대한 포인터를 어떻게 반환합니까?
내가 좋아하는 프로그램 일 경우 :
class Ticket
{
private:
char* concertName;
public:
Ticket(char* name="Concert");
char* getConcertName();
}
int main()
{
char* test;
Ticket t1;
test=t1.getConcertName();
test[1]='A';
}
Ticket::Ticket(char* name)
{
this->concertName=new char[strlen(Concert)+1];
strcpy(this->concertName,name);
}
Ticket::getConcertName()
{
return this->concertName;
}
어떤 것 게터의 수익을? 내 직감은 이전에 concertName에 할당 한 메모리 블록의 첫 번째 요소에 대한 포인터를 반환하므로 예제에서와 같이 setter를 사용하지 않고 배열의 값을 main에서 직접 변경할 수 있다고합니다.
변경이 가능하지만 개인 영역의 개념은 setter 또는 getter를 사용하지 않는 경우 객체 외부의 액세스를 속성으로 제한하기위한 것입니다.
다음과 같은 정적 필드가 있으면 어떻게됩니까? static unsigned int * arrayI; 및 arrayI에서 값을 반환하는 getter처럼 작동하는 정적 메서드?
직감이 잘못되었습니다. 왜 그렇게 해보지 그래? 함수 정의 시그너처는 정확히 BTW 선언과 일치해야합니다. 반환 유형을 포함합니다. – user0042
https://stackoverflow.com/questions/42587067/why-do-people-write-private-field-getters-returning-a-non-const-reference – Everyone
'const char *'을 고려해 보셨습니까? –