栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > C++面试题库

初级C++面试题 笔试题(附答案)

C++面试题(初级)
姓名______ 日期_______

1:写出输出

void fun(int i) {
static int value=i++;
cout<<value;
}

int main() {
fun(0);
fun(1);
fun(2);
}

2:引用和指针之间有什么区别?
1.从内存上来讲  系统为指针分寸内存空间,而引用与绑定的对象共享内存空间,系统不为引用变量分配内容空间。

2指针初始化以后可以改变指向的对象,而引用定义的时候必须要初始化,且初始化以后不允许再重新绑定对象。

3.所以引用访问对象是直接访问。指针访问对象是间接访问。

4。如果pa是指针,那么*pa就是引用了。

但是两者在作为形参的时候非常相似,区别是指针拷贝副本,引用不拷贝。程序如下:

#include<stdio.h>

void pt(int * pta,int * ptb)

{

int *ptc;

ptc=pta;pta=ptb;ptb=ptc;

}

void ref(int &ra,int &rb)

{

int rc;

rc=ra;ra=rb;rb=rc;

}

void main()

{

int a=3;int b=4;

int *pa=&a;int *pb=&b;

pt(pa,pb);

printf(“zhizhen: a=%d,b=%dn”,a,b);

ref(a,b);

printf(“yinyong: a=%d,b=%dn”,a,b);

}

输出结果如下图:




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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/265588.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号