重载 模板 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),编译器在看到内联函数的调用时,是无法知道内联函数的内容的,因此也无法展开,所以必须将内联函数定义在头文件中。
浙公网安备 33010602011771号