当前位置:   article > 正文

C++编译器对类模板的按需实例化

C++编译器对类模板的按需实例化

一、类模板按需实例化

假定C++类模板中有多个函数,但是在使用时仅使用函数A、函数B,那么类模板实例化时仅仅会实例化出函数A、函数B。这就是类模板的按需实例化。

二、代码演示

类模板array中,函数T& operator[](size_t index)中存在语法错误

但是类模板实例化时,实例化出的类对象a1并没有调用T& operator[](size_t index)函数,因此即使类模板中存在语法错误,编译器也不会报错。

但如果类对象a1调用了T& operator[](size_t index)函数,那么编译器也要实例化出该函数,所以旧货报出该函数中的语法错误。

  1. namespace bit {
  2. // 定义一个模板类型的静态数组
  3. template<class T, size_t N = 10>
  4. class array
  5. {
  6. public:
  7. T& operator[](size_t index)
  8. {
  9. size(1);//size()函数没有参数,此处存在语法错误
  10. return _array[index];
  11. }
  12. const T& operator[](size_t index)const { return _array[index]; }
  13. size_t size()const { return _size; }
  14. bool empty()const { return 0 == _size; }
  15. private:
  16. T _array[N];
  17. size_t _size;
  18. };
  19. }
  20. int main()
  21. {
  22. bit::array<int, 10> a1;
  23. cout << a1.size() << endl;
  24. return 0;
  25. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/1002970
推荐阅读
相关标签
  

闽ICP备14008679号