Home [C++] RTTI, CRTP, RVO, EVO ... 참고 링크
Post
Cancel

[C++] RTTI, CRTP, RVO, EVO ... 참고 링크

RTTI

  • dynamic cast, typeid
  • 지양해야함
  • 런타임에 타입 검사하기 때문

CRTP

로버트마틴 solid

디미터 원칙

RVO, NRVO

  • Return Value Optimization
1
2
3
4
//RVO
Val create_val_RVO(int num) {
    return val(num);
}
  • Named Return Value Optimization
1
2
3
4
5
//NRVO
Val create_val_NRVO(int num) {
    Val val(num);
    return val;
}
1
2
3
4
5
T fn()
{
  T t;
  return std::move (t);
}
  • 위와 같은 코드는, 최적화되지 않아 복사생성자가 호출된다고함.

EBO

  • 공백 기본 클래스 최적화 (Empty Base Optimization)

  • 공백 클래스: 개념적으로 차지하는 메모리 공간이 없어야함

    • non-static 멤버가 없음 (static 멤버를 가질 수 있음)
    • virtual 함수가 없음 (non-virtual 멤버 함수를 가질 수 있음)
    • virtual base 클래스가 없음 (typedef나 enum 등을 가질 수 있음)
  • 하지만, C++ 독립 구조 객체는 반드시 크기가 0을 넘어야한다는 제약 (char 끼워넣어 0을 넘김)

  • 만약, 상속에 사용한다면 이러한 제약을 최적화해줌 (크기가 0)

참고

This post is licensed under CC BY 4.0 by the author.

SCPC 2021 Round 1

[learn-opengl]Tessellation, Height Maps