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 ;
}

转载于:https://www.cnblogs.com/chio/archive/2007/10/19/930851.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值