전달을 통한 값 대 전달 참조를 올바르게 이해하고 싶습니다. 특히, 개체에 대한 증분 ++
연산자의 접두사/접미사 버전을 살펴 보았습니다. 내가 제대로 접두사/후위 증가 연산자를 구현 한, 모든접미사/접미사 증가 연산자
class X{
private:
int i;
public:
X(){i=0;}
X& operator ++(){ ++i; return *this; } //prefix increment
X operator ++ (int unused){ //postfix increment
X ret(*this);
i++;
return ret;
}
operator int(){ return i; } //int cast
};
첫째 :
은의 우리가 다음 클래스X
이 있다고 가정하자?
둘째, 접두어 연산자와 비교하여 후위 연산자가 얼마나 효율적입니까? 운영자의 각 버전을 사용할 때 얼마나 많은 수의 X
개체 복사본이 생성됩니까?
return-by-reference와 value-by-return에서 정확히 무슨 일이 일어나는지에 대한 설명은 내가 이해하는 데 도움이 될 수 있습니다.
편집 : 예를 들어, 다음 코드를 사용하여 ...
X a;
X b=a++;
... a와 b 지금 별명은?
접미사에'i'를 후위로 올릴 필요가 없습니다. 사실, 나는 [FredOverflow suggests] (http://stackoverflow.com/questions/3181211/3181359#3181359)로하고 프리픽스 버전을 호출합니다. IMO는 실제로 구현을 재 구현하는 것보다 훨씬 관용적입니다. _ 암시 적 변환 연산자를 제거하십시오. _ 그것은 당신을 다치게 할 것입니다. (암시 적 변환 연산자를 작성한 세 번째와 마지막 시간은 2001 년이었고 1-2 년 후에 나는 미묘한 버그를 일으키고 그것을 제거했다는 것을 발견했습니다 - 이전의 모든 것들처럼.) – sbi