정적 멀티태스킹(모드 아날로그 멀티태스킹)

1379 단어
허함수의 사용은 추가 비용을 가져올 수 있다. 허함수를 가진class 유형은 모두 허함수표를 필요로 한다. 허함수가 하나 더 있을 때마다 대응하는 대상의 크기는 4bytes(32비트 기기에서) 증가한다. 과장된 생각해 보자. 10개의 부류가 있고 부류마다 100개의 허함수가 있는 경우 대상마다 얼마나 증가할까?
4x10x100=4000bytes!
공간적인 비용을 제외하고 모든 허함수의 호출은 시간적으로 일반 함수보다 성형 덧셈과 바늘 간접 인용, 즉 시간적인 비용을 더 많이 쓴다.
 
template<typename Derived>
class Basic
{
public:
       inline void Print() {
            SelfCast()->Print();
      }

protected:
       inline Derived* SelfCast() {
             return static_cast <Derived*>(this);
      }
};
class Derived1 : public Basic<Derived1>
{
public:
      Derived1() {}

      inline void Print() {
            std::cout << "Derived1 Print" << std::endl;
      }
};
class Derived2 : public Basic<Derived2>
{
public :
      Derived2() {}

       inline void Print() {
            std::cout << "Derived2 Print" << std::endl;
      }

       static std::string Name() {
             return "Derived2 Class" ;
      }
};

호출 방법:,
Basic<Derived1>* der1 = new Derived1();
der1->Print();
Basic<Derived2>* der2 = new Derived2();
der2->Print();

결과 출력:
Derived1 Print
Derived2 Print
여기서 실현되는 관건은 SelfCast 함수입니다.static 을 통해cast는 현재 대상을 구체적으로 지정한 하위 클래스 대상으로 강제로 변환합니다. 여기는 Derived 1입니다.

좋은 웹페이지 즐겨찾기