其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

C++面试题集(5)


发布日期:2018年12月24日
 
C++面试题集(5)

:是多少位的系统?在数据总线上是怎么实现的?

<<IBM>>
怎样用最快的方法判断链表是否有环?

c++中引用和指针有什么不同?指针加上什么限制等于引用?
引用被创建的时候必须被初始化而指针不是必需的 引用在创建后就不能改变引用的关系而指针在初始化后可以随时指向
其它的变量或对象 没有NULL引用引用必须与合法的存储单元关联而指针可以是NULL

做的项目遇到的困难怎样解决?

操作符重载
class CMyObject:pulic CObject
{
Public:
CMyObject();
CMyObject &operator=(const CMyObject &my);
private:
CString strName;
int nId:
};
请重载赋值操作符

链表
Struct structList
{
int value;
structList *pHead;
}
Struct LinkedList *pMyList;
请编写删除链表的头尾和第n个节点的程序

用Socket API制作一个聊天程序通讯协议使用tcp/ip要求有简单界面即可支持多人聊天

如果有过工作经验请说明在先前公司的工作以及离职原因(如无请说明毕业后的个人展望)

***************************************************************************
对于C++中类(class) 与结构(struct)的描述正确的为:
A类中的成员默认是private的当是可以声明为publicprivate 和protected结构中定义的成员默认的都是public;
B结构中不允许定义成员函数当是类中可以定义成员函数;
C结构实例使用malloc() 动态创建类对象使用new 操作符动态分配内存;
D结构和类对象都必须使用new 创建;
E结构中不可以定义虚函数当是类中可以定义虚函数
F结构不可以存在继承关系当是类可以存在继承关系
答:ADF

两个互相独立的类:ClassA 和 ClassB都各自定义了非静态的公有成员函数 PublicFunc() 和非静态的私有成员函数 PrivateFunc();
现在要在ClassA 中增加定义一个成员函数ClassA::AdditionalPunction(ClassA aClassB b);则可以在AdditionalPunction(ClassA xClassB y)的实现部分(函数功能体内部)
出现的合法的表达是最全的是:
AxPrivateFunc();xPublicFunc();yPrivateFunc();yPublicFunc();
BxPrivateFunc();xPublicFunc();yPublicFunc();
CxPrivateFunc();yPrivateFunc();yPublicFunc();
DxPublicFunc();yPublicFunc();
答:B
C++程序下列说法正确的有:
A对调用的虚函数和模板类都进行迟后编译
B基类与子类中函数如果要构成虚函数除了要求在基类中用virtual 声名而且必须名字相同且参数类型相同返回类型相同
C重载的类成员函数都必须要:或者返回类型不同或者参数数目不同或者参数序列的类型不同
D静态成员函数和内联函数不能是虚函数友员函数和构造函数也不能是虚函数但是析构函数可以是虚函数
答:A
***************************************************************************

C++中的类与结构的区别?

构造函数和析构函数是否可以被重载为什么?
构造函数可以被重载析构函数不可以被重载因为构造函数可以有多个且可以带参数而析构函数只能有一个且不能带参数

一个类的构造函数和析构函数什么时候被调用是否需要手工调用?
构造函数在创建类对象的时候被自动调用析构函数在类对象生命期结束时由系统自动调用

#i nclude filenameh和#i nclude <filenameh>的区别?
#i nclude filenameh表明该文件是用户提供的头文件查找该文件时从当前文件目录开始#i nclude <filenameh>表明这个文件是一个工程或标准头文件查找过程会检查预定义的目录

头文件的作用是什么?
通过头文件来调用库功能在很多场合源代码不便(或不准)向用户公布只要向用户提供头文件和二进制的库即可用户只需要按照头文件中的接口声明来调用库功能而不必关心接口怎么实现的编译器会从库中提取相应的代码
头文件能加强类型安全检查如果某个接口被实现或被使用时其方式与头文件中的声明不一致编译器就会指出错误这一简单的规则能大大减轻程序员调试改错的负担

C++函数中值的传递方式有哪几种?
C++函数的三种传递方式为值传递指针传递和引用传递

内存的分配方式的分配方式有几种?
从静态存储区域分配内存在程序编译的时候就已经分配好这块内存在程序的整个运行期间都存在例如全局变量
在栈上创建在执行函数时函数内局部变量的存储单元都可以在栈上创建函数执行结束时这些存储单元自动被释放栈内存分配运算内置于处理器的指令集中效率很高但是分配的内存容量有限
从堆上分配亦称动态内存分配程序在运行的时候用malloc或new申请任意多少的内存程序员自己负责在何时用free或delete释放内存动态内存的生存期由我们决定使用非常灵活但问题也最多

实现双向链表删除一个节点P在节点P后插入一个节点写出这两个函数;
双向链表删除一个节点P
template<class type> void list<type>::delnode(int p)
{
int k=;
listnode<type> *ptr*t;
ptr=first;

while(ptr>next!=NULL&&k!=p)
{
ptr=ptr>next;
k++;
}
t=ptr>next;
cout<<&#;你已经将数据项 &#;<<t>data<<&#;删除&#;<<endl;

ptr>next=ptr>next>next;
length&#;;
delete t;
}

在节点P后插入一个节点
template<class type> bool list<type>::insert(type tint p)
{
listnode<type> *ptr;
ptr=first;

int k=;
while(ptr!=NULL&&k<p)
{
ptr=ptr>next;
k++;
}
if(ptr==NULL&&k!=p)
return false;
else
{
listnode<type> *tp;
tp=new listnode<type>;
tp>data=t;
tp>next=ptr>next;
ptr>next=tp;
length++;

return true;
}
}

上一篇:Delphi中TApplication类的用法

下一篇:用C语言实现哲学家进餐的问题