TrendMicro笔试题收集

 1,2两题写出显示结果,3题改错

1.

#include  < stdio.h >
#include 
< stdlib.h >

class  A{
public :
       A(){func(
0 );}
       
virtual   void  func( int  data){printf( " A1 :%d\n " ,data);}
       
virtual   void  func( int  data)  const {printf( " A2 :%d\n " ,data);}
       
void  func( char   * str){printf( " A3 :(%s)\n " ,str);}
};

class  B: public  A{
public :
       
void  func(){printf( " B1 :%s\n " , "" );}
       
void  func( int  data){printf( " B2 :%d\n " ,data);}
       
void  func( char   * str){printf( " B3 :(%s)\n " ,str);}
};

int  main()
{
       A 
* pA;
       B b;
// A1 :0
        const  A  * pcA;

       pA
=& b;
       pA
-> func( 1 );  // B2 :1
       pA -> func( " test " ); // A3 :(test)
       A().func( 1 ); // A1 :0  A1 :1

       pcA
=& b;
       pcA
-> func( 2 ); // A2 :2


       system(
" PAUSE " );
       
return   0 ;
}

2.
#include  < iostream >
using   namespace  std;

template 
< typename T >
void  func( const   int   & t)
{
       cout
<< t + 100 << endl;
}

template 
< typename T >
void  func( const  T  & t)
{
       cout
<< t << endl;
}

int  main()
{
       func(
10.3 ); // 10.3
       func( 1000 ); // 1000

       system(
" PAUSE " );
       
return   0 ;
}
第一个模板函数因为参数中不含类型参数,所以无法进行模板推演,也就无法进行实例化
即使改为下面,一样会出错
#include  < iostream >
using   namespace  std;

template 
< typename T >
void  func( const   int   & t)
{
       cout
<< t + 100 << endl;
}
// 这个函数实际上无法进行模板推演的模板函数

// template <typename T>
// void func(const T &t)
// {
//        cout<<t<<endl;
// }

int  main()
{
       
// func(10.3); // 10.3
       func( 1000 ); // 1000

       system(
" PAUSE " );
       
return   0 ;
}
no matching function for call to `func(int)'

3.
#include  < iostream >
#include 
< stdlib.h >
using   namespace  std;

class  klass
{
public :
       klass(){ cout
<<   " ctor called! " ;}

private :
       
~ klass(){} // !!!private
        void  func( int  n)
       {
              cout
<< " klass!! " << endl;
       }

public :
       
void  test()
       {
              func(
100 );
       }
};


int  main()
{
       klass k;
       k.test();

       
// automatically call ~kclass() here, but private!
       system( " PAUSE " );
       
return   0 ;
}

你可能感兴趣的:(笔试题)