如果在某种情况下,想实现像宏那样代码展开的话,不妨试试c++为我们提供的inline,可以节省必要的由于函数调用带来的开销。需要注意的是,inline只是一种暗示,和register很像。
 
InBlock.gif /***************************************
InBlock.gif *inline内联函数
InBlock.gif **************************************/

InBlock.gif    
InBlock.gif#include <iostream>
InBlock.gif using namespace std;
InBlock.gif
InBlock.gifinline int max( int a, int b)
InBlock.gif{
InBlock.gif   return a>b?a:b;
InBlock.gif}
InBlock.gif
InBlock.gif int main( int argc, char **argv)
InBlock.gif{
InBlock.gif  cout<<max(10,20);
InBlock.gif  cout<< "        "<<max(99,88)<<endl;
InBlock.gif   return 0;
InBlock.gif}
 
代码2:
InBlock.gif /*******************************************************
InBlock.gif *友元类friend
InBlock.gif *******************************************************/
    
InBlock.gif
InBlock.gif#include <iostream>
InBlock.gif using namespace std;
InBlock.gif
InBlock.gif //类A
InBlock.gif class A{
InBlock.gif   int a,b;
InBlock.gif public:
InBlock.gif   void init( int m, int n);
InBlock.gif   void show
InBlock.gif};
InBlock.gif
InBlock.gifinline void A::init( int m, int n)
InBlock.gif{
InBlock.gif  a=m;
InBlock.gif  b=n;
InBlock.gif}
InBlock.gif
InBlock.gif //类B
InBlock.gif class B{
InBlock.gif public:
InBlock.gif   int min(A x);
InBlock.gif};
InBlock.gif
InBlock.gif int B::min(A x)
InBlock.gif{
InBlock.gif   return x.a<x.b?x.a:x.b; //访问私有成员
InBlock.gif}
InBlock.gif int main( int argc, char* argv[])
InBlock.gif{
InBlock.gif  A aa(123,321);
InBlock.gif  B bb;
InBlock.gif  cout<<bb.min(aa);; //123
InBlock.gif   return 0;
InBlock.gif}