非内联函数定义模

翻译 2013年12月02日 16:23:26

为了防止在连接时出现多重定义,一般类型的定义不会放在头文件中,但模板的定义很特殊,由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;
}


相关文章推荐

inline内联函数(声明前加inline还是定义前加inline)

inline

内联函数和宏定义的区别

用内联取代宏: 1.内联函数在运行时可调试,而宏定义不可以; 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会;  3.内联函数可以访问类的成员变量,宏...

宏定义和内联函数的学习

宏定义可以提高效率,但是宏不是函数。预编译通过代码复制的方式代替函数调用,省去了诸如函数压栈等系统过程,从而提高了效率。但是由于宏定义仅仅是代码替换,所以引起很多问题。 #define  MAX(a...
  • maopig
  • maopig
  • 2011年09月13日 09:43
  • 842

cppTest-2.1:内联函数与宏定义的比较

/** *cppTest-2.1:内联函数与宏定义的比较 * *1.内联函数在运行时可调试,而宏定义不可以; *2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义...

内联函数&宏定义

用内联取代宏:1.内联函数在运行时可调试,而宏定义不可以; 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会;  3.内联函数可以访问类的成员变量,宏定义则不能;...

内联函数与宏定义

用内联取代宏: 1.内联可调试; 2.可进行类型安全检查或自动类型转换; 3.可访问成员变量。 另外,定义在类声明中的成员函数自动转化为内联函数。 文章(一) ...

【基础C&C++】内联函数&宏定义

内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具...

C++内联函数与宏定义的区别

用内联取代宏: 1.内联函数在运行时可调试,而宏定义不可以; 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会;  3.内联函数可以访问类的成员变量,宏...

C++ 学习点滴 声明与定义的区别 内联函数

好久没更博客了,满满的负罪感,忙了两周期末考试,又无所事事的玩了一周,开始更博客。        记录一下最近学C++的一些东西吧。          1.声明与定义的区别           在C+...

C++内联函数和宏定义

用内联取代宏: 1.内联可调试; 2.可进行类型安全检查或自动类型转换; 3.可访问成员变量。 另外,定义在类声明中的成员函数自动转化为内联函数。  文章(一) ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:非内联函数定义模
举报原因:
原因补充:

(最多只允许输入30个字)