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

posted @ 2007-10-19 19:08  中土  阅读(668)  评论(0编辑  收藏  举报
©2005-2008 Suprasoft Inc., All right reserved.