C++面试题(初级)
姓名______ 日期_______
1:写出输出
void fun(int i) {
static int value=i++;
cout<<value;
}
int main() {
fun(0);
fun(1);
fun(2);
}
2:引用和指针之间有什么区别?
3:比较全局变量和静态变量,试说明两者有何异同.
4:分析代码,给出i,j,k的结果.
int i,j,k;
i=j=k=0;
if(++i||j++||++k) {}
5:说出如下const声明的含义:
1.const char* p
2.char const* p
3.char* const p
4.char A::fun() const;
6:编译下面的代码,会有什么结果?
1:
void fun(char);
void fun(char*);
int main()
{
fun(0);
}
2:
void fun(int);
void fun(int*);
int main()
{
fun(0);
}
7:请写出程序运行的结果
class A{
public:
A() { cout<<"A::A()"<<endl;}
~A() { cout<<"A::~A()"<<endl;}
};
class B{
public:
B() {cout<<"B::B()"<<endl;}
~B() {cout<<B::~B()"<<endl;}
};
class C:public B{
A a;
public:
C() {cout<<"C::C()"<<endl;}
~C() {cout<<"C::~C()"<<endl;}
};
A a;
int main()
{
C c;
}
8:请写出程序运行的结果
class A{
public:
A() {cout<<"A::A()"<<endl;}
~A() {cout<<"A::~A()"<<endl;}
};
class B{
public:
B(){cout<<"B::B()"<<endl;}
~B(){cout<<"B::~B()"<<endl;}
};
class C:public B{
public:
C():a(A()),b(B()){}
~C(){}
private:
B b;
A a;
};
int main()
{
C c;
}
9:请写出程序运行的结果
#include<iostream>
using namespace std;
class base{
public:
virtual void print() const {cout<<"base::f()"<<endl;}
};
class derived:public base {
public:
virtual void print() const {cout<<"derived::f()"<<endl;}
};
void print(const base& obj)
{
obj.print();
}
int main()
{
base* pb1=new derived();
print(*pb1);
base* pb2=new base(*pb1);
print(*pb2);
base b=base(derived());
print(b);
delete pb1;
delete pb2;
return 0;
}
10:什么是抽象类?
11:什么时候需要使用虚拟析构函数?
12:抽象基类的抽象虚析构函数一定要有函数体吗? 为什么?
13:下面的代码是否有错误? 如果有错,请说明原因.
char* const s="hello";
s[0]='a';
14:分析如下代码是否存在问题
const char* hello() {return "hello world";}
int main()
{
const char* pc=hello();
cout<<pc;
}
15:分析下面代码,指出问题
class obj{};
1. obj& fun() {obj o;return o;}
2. obj* fun() {obj o;return &o;}
3. obj fun() {obj o;return o;}
16:什么是函数重载?
17:面向对象有哪三个要素?
18:什么是多态?C++如何实现多态?
19:构造函数没有返回值,那么如何得知对象是否构造成功?
20:编译一个C/C++程序通常有哪几个阶段?
21:请指出下面代码存在的问题
class CC{
int* m_pCount;
public:
void clear(){ if (m_pCount) delete m_pCount;}
CC(){m_pCount=new int;}
~CC() {clear();}
};
22:请指出如下代码的问题所在
void ex() {
throw exception("exception");
}
void fun() {
char* buf=new char[64];
ex();
delete[] buf;
}
23:写出程序输出
void ex()
{ throw exception("exception");}
void fun()
{
try{ex();}
catch(exception*) {cout<<"exception*"<<endl;}
catch(exception&) { cout<<"exception&"<<endl"}
catch(...) { cout<<"..."<<endl;}
}
答案(不一定正确):
1)
2)
3)全局变量具有全局作用域
4)
5)
6)编译失败
7)A::A()
8.B::B()
9.derived::f()
10.含有至少一个纯虚函数的类
11.该类存在派生类的时候
12.不一定要有
13.不行
14.现代编译器上应该无问题的
15.class
1.
2.
3.
16.具有相同函数名称
17.继承
18.多态找本书翻下定义把
19.
20.
21.
22.
23.
评论