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;
}
#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;
}
第一个模板函数因为参数中不含类型参数,所以无法进行模板推演,也就无法进行实例化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)' 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;
}
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;
}
#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;
}