1 考虑函数原型void hello(int a,int b=7,char* pszC="*"),下面的函数调用钟,属于不合法调用的是
hello(5)
hello(5,8)
hello(6,"#")
hello(0,0,"#")
2 下面有关重载函数的说法中正确的是
重载函数必须具有不同的返回值类型
重载函数形参个数必须不同
重载函数必须有不同的形参列表
重载函数名可以不同
3 分析一下程序的运行结果:
class CBase
{
public:
CBase(){cout<<”constructing CBase class”<<endl;}
~CBase(){cout<<”destructing CBase class”<<endl;}
};
class CSub : public CBase
{
public:
CSub(){cout<<”constructing CSub class”<<endl;}
~CSub(){cout<<”destructing CSub class”<<endl;}
};
void main()
{
CSub obj;
}
constructing CSub class constructing CBase class destructing CSub class destructing CBase class
constructing CBase class constructing CSub class destructing CBase class destructing CSub class
constructing CBase class constructing CSub class destructing CSub class destructing CBase class
constructing CSub class constructing CBase class destructing CBase class destructing CSub class
4 在一个cpp文件里面,定义了一个static类型的全局变量,下面一个正确的描述是:
只能在该cpp所在的编译模块中使用该变量
该变量的值是不可改变的
该变量不能在类的成员函数中引用
这种变量只能是基本类型(如int,char)不能是C++类型
5 观察下面一段代码:
class ClassA
{
public:
virtual ~ ClassA(){};
virtual void FunctionA(){};
};
class ClassB
{
public:
virtual void FunctionB(){};
};
class ClassC : public ClassA,public ClassB
{
public:
};
ClassC aObject;
<span style="font-family: SimHei;font-size:18px;">ClassA* pA=&aObject;</span><br style="font-family: SimHei;font-size:18px;" /><span style="font-family: SimHei;font-size:18px;">ClassB* pB=&aObject;</span><br style="font-family: SimHei;font-size:18px;" /><span style="font-family: SimHei;font-size:18px;">ClassC* pC=&aObject;</span>
关于pA,pB,pC的取值,下面的描述中正确的是:
pA,pB,pC的取值相同.
pC=pA+pB
pA和pB不相同
pC不等于pA也不等于pB
6下列程序的运行结果为:
#include<iostream>
using namespace std;
void main() {
int a = 2;
int b = ++a;
cout << a / 6 << endl;
}
0.5
0
0.7
0.6666666-
7 有如下一段代码:
#define ADD(x,y) x+y
int m=3;
m+=m*ADD(m,m);
则m的值为:
15
12
18
58
8 下面的模板声明中,正确的是:
template<typename T1,T2>
template<class T1,T2>
template<class T1,class T2>
template<typename T1;typename T2>
9 在Windows编程中下面的说法正确的是:
两个窗口,他们的窗口句柄可以是相同的
两个窗口,他们的处理函数可以是相同的
两个窗口,他们的窗口句柄和窗口处理函数都不可以相同.
10 下面哪种情况下,B不能隐式转换为A?
class B:public A{}
class A:public B{}
class B{operator A();}
class A{A(const B&);}
11 某公司使用包过滤防火墙控制进出公司局域网的数据,在不考虑使用代理服务器的情况下,下面描述错误的是”该防火墙能够( )”.
使公司员工只能访问Internet上与其业务联系的公司的IP地址.
仅允许HTTP协议通过,不允许其他协议通过,例如TCP/UDP.
使员工不能直接访问FTP服务器端口号为21的FTP地址.
仅允许公司中具有某些特定IP地址的计算机可以访问外部网络
12 数字字符0的ASCII值为48,若有以下程序:
main()
{
char a=’1’,b=’2’;
printf(“%c,”,b++);
printf(“%d\n”,b-a);
}
程序运行之后的输出结果是:
3,2
50,2
2,2
2,50
13 假设你在编写一个使用多线程技术的程序,当程序中止运行时,需要怎样一 个机制来安全有效的中止所有的线程?请描述其具体流程.
14从程序健壮性进行分析,下面的 FillUserInfo 函数和 main 函数分别存在什么问题?
#define MAX_NAME_LEN 20
struct USERINFO
{
int nAge;
char szName[MAX_NAME_LEN];
};
void FillUserInfo(USERINFO *parUserInfo)
{
stu::cout << "请输入用户的个数:";
int nCount = 0;
std::cin >> nCount;
for (int i = 0; i < nCount; i++)
{
std::cout << "请输入年龄:";
std::cin >> parUserInfo[i]->nAge;
std::string strName;
std::cout << "请输入姓名:";
std::cin >> strName;
strcpy(parUserInfo[i].szName, strName.c_str());
}
}
int main(int argc, char *argv[])
{
USERINFO arUserInfos[100] = {0};
FillUserInfo(arUserInfos);
printf("The first name is:");
printf(arUserInfos[0].szName);
printf("\n");
return 0;
}