设为首页 加入收藏

TOP

理解C++编译器编译模板类的过程
2014-11-18 14:22:39 】 浏览:1913
Tags:理解 编译器 编译 模板 过程

  前言


  常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。


  本文对象是那些熟悉模板但还没有很多编写模板经验的程序员。本文只涉及模板类,未涉及模板函数。但论述的原则对于二者是一样的。


  问题的产生


  通过下例来说明问题。例如在array.h文件中有模板类array:


  // array.h


  template


  class array


  {


  T data_[SIZE];


  array (const array& other);


  const array& operator = (const array& other);


  public:


  array(){};


  T& operator[](int i) {return data_[i];}


  const T& get_elem (int i) const {return data_[i];}


  void set_elem(int i, const T& value) {data_[i] = value;}


  operator T*() {return data_;}


  };


  然后在main.cpp文件中的主函数中使用上述模板:


  // main.cpp


  #include "array.h"


  int main(void)


  {


  array intArray;


  intArray.set_elem(0, 2);


  int firstElem = intArray.get_elem(0);


  int* begin = intArray;


  }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇c++动态创建二维数组 下一篇计算机二级辅导:二叉树的C++描述

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目