如果在某种情况下,想实现像宏那样代码展开的话,不妨试试c++为我们提供的inline,可以节省必要的由于函数调用带来的开销。需要注意的是,inline只是一种暗示,和register很像。
/***************************************
*inline内联函数
**************************************/
#include <iostream>
using namespace std;
inline int max( int a, int b)
{
return a>b?a:b;
}
int main( int argc, char **argv)
{
cout<<max(10,20);
cout<< " "<<max(99,88)<<endl;
return 0;
}
*inline内联函数
**************************************/
#include <iostream>
using namespace std;
inline int max( int a, int b)
{
return a>b?a:b;
}
int main( int argc, char **argv)
{
cout<<max(10,20);
cout<< " "<<max(99,88)<<endl;
return 0;
}
代码2:
/*******************************************************
*友元类friend
*******************************************************/
#include <iostream>
using namespace std;
//类A
class A{
int a,b;
public:
void init( int m, int n);
void show
};
inline void A::init( int m, int n)
{
a=m;
b=n;
}
//类B
class B{
public:
int min(A x);
};
int B::min(A x)
{
return x.a<x.b?x.a:x.b; //访问私有成员
}
int main( int argc, char* argv[])
{
A aa(123,321);
B bb;
cout<<bb.min(aa);; //123
return 0;
}
*友元类friend
*******************************************************/
#include <iostream>
using namespace std;
//类A
class A{
int a,b;
public:
void init( int m, int n);
void show
};
inline void A::init( int m, int n)
{
a=m;
b=n;
}
//类B
class B{
public:
int min(A x);
};
int B::min(A x)
{
return x.a<x.b?x.a:x.b; //访问私有成员
}
int main( int argc, char* argv[])
{
A aa(123,321);
B bb;
cout<<bb.min(aa);; //123
return 0;
}
本文转自 xcf007 51CTO博客,原文链接:http://blog.51cto.com/xcf007/108612,如需转载请自行联系原作者