4399网页游戏面试C++测试题Word格式.docx
《4399网页游戏面试C++测试题Word格式.docx》由会员分享,可在线阅读,更多相关《4399网页游戏面试C++测试题Word格式.docx(14页珍藏版)》请在冰点文库上搜索。
![4399网页游戏面试C++测试题Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/11/40ffabe1-65bd-4d6d-a05b-a124f02307a7/40ffabe1-65bd-4d6d-a05b-a124f02307a71.gif)
在第7行生成编译期错误
e)
在第1行生成编译期错误
2.
下面程序的执行结果是?
b
char
*gxxx()
static
xxx[1024];
return
xxx;
}
main()
*g="
string"
strcpy(gxxx(),g);
g
gxxx();
strcpy(g,"
oldstring"
);
The
string
is
:
%s"
gxxx());
Oldstring
产生执行期错误
产生编译期语法错误
以上都不对
3.
以下程序的执行结果是?
c
myalloc(char
*x,
n)
x=
(char
*)malloc(n*sizeof(char));
memset(x,\0,n*sizeof(char));
myalloc(g,20);
Oldstring"
g);
String
执行期错误
编译期语法错误
4.以下代码的执行结果是?
p[]="
int
x=0;
if(p=="
)
{
printf("
Pass
1"
if(p[sizeof(p)-2]=='
g'
printf("
2"
else
Fail
}
else
1,
2
编译器语法错
5.
对于下面的代码,哪个说法是对的?
b
const
*p;
以及
*
p;
两个字符串内容都不可修改
第一个:
不可修改字符串内容,第二个,不可假改指针内容
两个指针都不可修改
不可修改指针,第二个,不可修改字符串内容
以上说法都不对
6.
以下代码的输出是?
c
c=-64;
i=-32;
unsigned
u
=-16;
if(c>
i)
pass1,"
if(c<
u)
pass2"
Fail2"
Fail1);
if(i<
}
Pass1,Pass2
Pass1,Fail2
Fail1,Pass2
Fail1,Fail2
7.
以下代码的输出是
e
i=0;
for(i=0;
i<
20;
i++)
switch(i)
{
case
0:
i+=5;
1:
i+=2;
5:
default:
i+=4;
break;
}
%d,"
i);
0,5,9,13,17
5,9,13,17
12,17,22
16,21
语法错误
8.
下面哪个说法是对的?
d
class
A
{
virtual
func1();
void
func2();
Class
B:
public
func1()
cout
<
"
fun1
in
B"
endl;
func2()
fun2
A中的func1和B中的func2都是虚函数.
A中的func1和B中的func2都不是虚函数.
A中的func2是虚函数.,B中的func1不是虚函数.
A中的func2不是虚函数,B中的func1是虚函数.
9.
cout是I/O流库预定义的什么?
.
a)类
b)对象
c)包含文件
d)常量
10.
在32位系统下,已知int
a,*pa=&
a;
输出指针pa十进制的地址值的方法是?
a)cout<
pa;
b)cout<
*pa;
c)cout<
&
d)cout<
unsigned
long(&
pa);
11.
32位系统下,有一个类A定义如下:
Int
M1;
Float
M2;
Virtual
F1(
Void
F2(
Static
F3(
};
定义一个A的实例a,请问a在常规的编译实现下,所占的内存空间有多大b
a)8
b)12
c)16
d)20
e)24
f)
以上答案都不对
12.
定义一个A的实例a,请问a在常规的编译实现下,所占的内存空间有多大
Float
M3;
Int
M4;
Enum
M5
E1
1;
E2
2;
定义一个A的实例a,请问a在常规的编译实现下,所占的内存空间有多大
d
a)8
12
c)16
d)20
e)24
以上答案都不对
13.
已知类型定义如下:
x;
~A(){}
y;
以下表达式的输出为:
A*
pa
A;
//假定pa赋值后的地址为0x111111;
B*
pb
dynamic_cast<
B*>
(
请问以上代码执行后,pb的值是:
a)0
b)与pa相同,即为0x111111
c)抛出异常
d)在pa地址上,进行类型换算偏移后的地址
e)以上结果都不对
14.
B&
>
(*
请问以上代码执行后,
b的地址是:
c)抛出异常
e)以上结果都不对
15.
关于this指针的说法错误的是
this指针不需要显示说明
虚函数拥有this指针
成员函数拥有this指针
静态成员函数拥有this指针
16.
下面对构造函数的不正确描述是
a
系统可以提供默认的构造函数
构造函数可以有参数,所以可以有返回值
构造函数可以重载
构造函数可以设置默认参数
17.下列对模板的声明,正确的是
template
T>
T1,T2>
T1,class
T2>
T1;
18.
什么函数只能访问静态成员变量。
静态函数
虚函数
构造函数
析构函数
19
假定类定义如下:
~A(void){}
B
~B(
void){}
C
~C(
){}
A
现有C的实例c,则当C被销毁时,调用的析构函数的顺序为
~C(),
~A(),
~B();
~A(),~C(),~B()
~B(),~A(),~C()
~C(),~B(),~A()
~A,~B(),~C()
~B(),~C(),~A()
20假定类定义如下:
A
A(void){}
B
B(
void){}
C(
){}
现有C的实例c,则当C被创建时,调用的建构函数的顺序为
C(),A(),B();
A(),C(),B()
B(),A(),C()
C(),B(),A()
A,
B(),C()
B(),C(),A()
二.问答题
1.以下程序的输出是
#include<
iostream.h>
#define
MAX(a,b)
?
main
()
m
10,
n
3,
k
k
MAX(m,
k)
10;
cout
100
2.以下程序的输出是:
iostream>
using
namespace
std;
a{
public:
test(){
main(void)
sizeof(a);
sizeof(b);
1
4
什么函数不能声明为虚函数?
静态成员函数不能是虚函数
构造函数不能是虚函数
4.
简述c++0x标准比较重要的新特性有哪些
新特性之一:
Lambda表达式.
很多编程编程语言都支持匿名函数(anonymousfunction)。
所谓匿名函数,就是这个函数只有函数体,而没有函数名。
Lambda表达式就是实现匿名函数的一种编程技巧,它为编写匿名函数提供了简明的函数式的句法。
同样是VisualStudio中的开发语言,VisualBasic和VisualC#早就实现了对Lambda表达式的支持,终于VisualC++这次也不甘落后,在VisualStudio2010中添加了对Lambda表达式的支持。
新特性之二:
静态断言static_assert
在新的C++标准C++0x中,加入了对静态断言的支持,引入了新的关键字static_assert来表示静态断言。
使用静态断言,我们可以在程序的编译时期检测一些条件是否成立,这个特性在调试模板函数的模板参数时特别有用。
在编译的时候,模板函数实例化,这时我们就可以使用静态断言去测试模板函数的参数是否按照我们的设计拥有合适的值。
此外,静态断言还带来很多其他的优势。
例如静态断言在编译时进行处理,不会产生任何运行时刻空间和时间上的开销,这就使得它比assert宏具有更好的效率。
另外比较重要的一个特性是如果断言失败,它会产生有意义且充分的诊断信息,帮助程序员快速解决问题。
新特性之三:
auto关键字
在C++0x中,auto关键字的意义发生了改变。
从VisualC++2010开始,auto关键字将用于指引编译器根据变量的初始值来决定变量的数据类型。
换句话说,我们可以把auto当成一种新的数据类型,它可以“从初始化器(initialize)中推导出所代表的变量的真正类型”。
这种对auto关键字的使用方式可以大大消除当前替代方式所导致的冗长和易出错的代码。
新特性之四:
右值引用
作为最重要的一项语言特性,右值引用(rvaluereferences)被引入到C++0x中。
我们可以通过操作符“&
”来声明一个右值引用,原先在C++中使用“&
”操作符声明的引用现在被称为左值引用。
左值引用和右值引用的表现行为基本一致,它们唯一的差别就是右值引用可以绑定到一个临时对象(右值)上,而左值引用不可以。
分别写出BOOL,int,float,指针类型的变量a
与“零”的比较语句。
Bool
if(
a==false
a==0
)
简述单件,对象工厂,观察者模式的常见用途。
客户端--------------服务器
一个父类写了一个virtual
函数,如果子类覆盖它的函数不加virtual
是否能实现多态?
能
只要基类在定义成员函数时已经声明了virtue关键字,在派生类实现的时候覆盖该函数时,virtue关键字可加可不加,不影响多态的实现。
符号常量;
(1)const
*p
(2)char
(3)char
p
说明上面三种描述的区别
p指针指向的值必须是字符型
2
p指针指向的值不能变
3
p指针地址不能变
写出运行结果:
{//
test2
union
V
struct
X
{
unsigned
s1:
s2:
3;
s3:
}x;
c;
}v;
v.c
100;
%d"
v.x.s3);
简述Critical
Section和Mutex的不同点
Mutex
是内核对象
Critical
Section本身不是内核对象