关闭

非内联函数定义模

293人阅读 评论(0) 收藏 举报
分类:

为了防止在连接时出现多重定义,一般类型的定义不会放在头文件中,但模板的定义很特殊,由template<>处理的任何东西意味着编译器在当时不为它分配存储空间,它一直处于等待状态直到被一个模板实例告知,有一种机制能去掉模板的多重定义,为了使用方便,几乎总是在头文件中放置全部的模板声明和定义

#include <iostream>
#include <assert.h>
using namespace std;

template<typename T>
class array
{
	enum{size = 100};
	T A[size];
public:
	T& operator[](int index);
};

template<typename T>
T& array<T>::operator [](int index)
{
	assert(index >= 0 && index < size);
	return A[index];
}

int main()
{
	array<float> fa;
	fa[0] = 1.414f;

	cout << "fa[0]==" << fa[0] << endl;

	return 1;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8114次
    • 积分:278
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:2篇
    • 译文:17篇
    • 评论:0条
    文章分类