복사 생성자는 C, Java에는 없음
class Vector
{
public:
Vector(const Vector& other);
}
Vector::Vector(const Vector& other)
: mX(other.mX), mY(other.mY)
{}
클래스에 복사 생성자가 없는 경우, 컴파일러가 암시적 복사 생성자를 자동으로 생성한다.
암시적 복사 생성자는 얕은 복사를 수행한다.
반환시 복사 발생 할 수 있으나 RVO 최적화시 복사가 발생하지 않는다.
Vector Vector::Multiply(const Vector& v) const {
Vector result(mX * v.GetX(), mY * v.GetY());
return result
}
함수 내부가 컴파일 타임에 결정되지 못할 것 같은 코드가 있으면 RVO 최적화가 발생하지 않을 수 있고 이는 성능 저하가 발생하니 매우 주의를 기울여야 한다. 내부의 구조체를 shared_ptr로 반환 하는 방법이 있을 수 있지만 RVO 최적화가 속도가 훨씬 빠르다.