std::vector<std::string> Object::getTypes(){
std::vector<std::string> types;
types.push_back("type1");
types.push_back("type2");
types.push_back("type3");
return types;
}
인가 이건 단지 스타일 선택인가요? 아니면 제가 빠진 것이 있습니까? 어떤 도움이라도 대단히 감사하겠습니다. 이건 너무 미안해.
업데이트 : 실제로 동일한 방법을 재정의하는 다른 클래스가 발견되면 어떤 방식 으로든 그렇게하므로 더 모호합니다. 나는 그것들을 모두 동일하게 만들 것이지만 더 좋은 접근법을 선호 할 것이다.
편집
는 배열의 첫 번째 두 요소와 벡터를 초기화하기 때문에 위의 레거시 코드가 올바르지 있습니다. 그러나이 오류는 주석에서 논의되었으며 따라서 보존되어야합니다. (types[]
한 번만 할당되고 push_back
가/재 할당이 발생 할 수 있기 때문에) 당신이 발견
...
return std::vector<std::string> (types, types + 3);
...
첫 번째 주문은 원칙적으로 메모리 재 할당을 필요로하지 않기 때문에 더 효율적일 수 있습니다. 함수 호출도 적습니다. C++ 11에서'return std :: vector { "type1", "type2", "type3"};'이라고 말할 수 있습니다. –
juanchopanza
@juanchopanza 또한,이 버전에서는 코드와 데이터의 분리가보다 명확하므로 구문 론적으로보다 명확합니다. –
나의 이전 코멘트에 대한 정정 : C++ 11에서는'return { "type1", "type2", "type3"};'과 같은 단어를 적게 사용할 수 있습니다. – juanchopanza