重载 模板 inline

重载:函数名相同,参数类型和个数不同

模板:函数名相同,个数相同,参数类型不同

#include <IOSTREAM>
using namespace std;

template <typename T>
T Max(T a, T b)
{
	if(a > b) return a;
	else return b;
}

void main()
{
	int a = 1, b = 2;
	float c = 1.1, d = 2.1;
	cout << Max(a, b) << endl;
	cout << Max(c, d) << endl;
}

注:模板是一种类型

 

inline在申明的时候加上即可。。

在类中定义的函数默认为内联函数,在类中申明的函数不默认为内联函数。

class Student
{
   public : inline void display( );//声明此成员函数为内置函数  //若不定义,申明,这里不许加Inline
   private :
   int num;
   string name;
   char sex;
};

inline void Student::display( ) // 在类外定义display函数为内置函数  //这里可以不加
{
   cout<<"num:"<<num<<endl;cout<<"name:"<<name<<endl;cout<<"sex:"<<sex<<endl;
}

 内联函数必须在调用调用该函数的文本中定义

编译器在看到程序中调用普通函数的代码时,是在这里填一个函数的地址,然后在执行时跳转到函数那边去。而碰到内联函数时,是将函数的内容全部在调用点展开,所以它必须知道这个内联函数的定义是什么,否则无法展开。而将内联函数的定义放在头文件(.h)中,一旦include了该头文件,就能看到内联函数的全部内容了,也就可以在调用点完全展开内联函数。如果将内联函数放在源文件中(.c),编译器在看到内联函数的调用时,是无法知道内联函数的内容的,因此也无法展开,所以必须将内联函数定义在头文件中。

  

posted on 2014-06-12 13:43  jsy306  阅读(365)  评论(0)    收藏  举报

导航