C++ 복사 생성자

mohadang·2022년 12월 4일
0

C++

목록 보기
40/48
post-thumbnail

복사 생성자는 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 최적화가 속도가 훨씬 빠르다.

profile
mohadang

0개의 댓글