C++面试题 C++笔试题

什么是二叉查找树?

参考答案:空树或者满足下列特点 ① 若它的左子树非空,则左子树上所有节点的值均小于根节点的值 ② 若它的右子树非空,则右子树上所有节点的值均大于根节点的值 ③ 左右子树本身又各...... <阅读全文>

队和栈的区别

参考答案:队列先进先出,栈后进先出。 <阅读全文>

描述冒泡法排序?

依次比较相邻的两个数,将小数放在前面,大数放在后面,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较,将小数放前,大数放后,一直比较到最大数 前的一对相邻数,将小数放...... <阅读全文>

构造函数 和析构函数 是否可以被重载

参考答案: 构造函数可以被重载; 析构函数不可以被重载(重载的必要条件是参数的类型或者个数不一样或者顺序不一样,无参就不能重载); <阅读全文>

下列函数重载声明正确的是:

A: int cale(int,int); int cale(const int,const int); B: int get(); double get(); C: int* result(int*) double* result(double*) D: extern “C” int compute(int*,int) extern “C” double ...... <阅读全文>

多态的作用

参考答案:主要是两个: 1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用; 2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正 确调用。 <阅读全文>

虚函数与纯虚函数的区别?

参考答案: ①类里声明虚函数的作用是为了能让这个函数在它的子类里面被覆盖,这样编译器就可以使用后期绑定来达到多态。纯虚函数接口,是个函数的声明而已,它要留到子类里面去实现。 ②虚函数在子类里面也可以...... <阅读全文>

重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别

参考答案: 从定义上来说: 重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。 重写:是指子类重新定义父类虚函数的方法。 从实现原理上...... <阅读全文>

子类析构时要调用父类的析构函数吗?

参考答案:析构函数调用的次序是先派生类的析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了定义一个对象时先调用基类的构造函数、然后调用派生类的构造 函数;析构的时候恰好...... <阅读全文>

static全局变量与普通的全局变量有什么区别?static局部变量和普通局部 变量有什么区别?static函数与普通函数有什么区别?

参考答案:static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次...... <阅读全文>

static有什么作用?

参考答案:①在函数体,一个被声明为静态的变量在函数调用的过程中维持其值不变; ②在模块内(函数体外),一个被声明为静态的变量可以被模块内的所有函数访问,但不能被模块外的其他函数访问。它是...... <阅读全文>

内存分配的方式

从静态存储区域分配内存。程序编译的时候内存已经分配好了,并且在程序的整个运行期间都存在,例如全程变量 在栈上创建。在执行函数时,函数内部的存储单元可以在栈上创建,函数结束时这些存储单元自动被释放...... <阅读全文>

使用new与malloc分配内存有什么区别?

1、new 是c++中的操作符,malloc是c 中的一个函数 2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也...... <阅读全文>

new、delete、malloc、free关系

delete会调用对象的析构函数,new调用构造函数。 malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。 它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无...... <阅读全文>

delete与 delete []区别

参考答案:delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函数。 <阅读全文>

将“引用”作为函数参数有哪些特点?

传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标 对象(在主调函数中)的操作。 ...... <阅读全文>

什么是“引用”?申明和使用“引用”要注意哪些问题?

引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再...... <阅读全文>

C++中const的作用

const用于定义常量; const定义的常量编译器可以对其进行数据静态类型安全检查; const修饰函数参数当传入的参数为用户自定义类型和抽象数据类型时,将值传递改为const&传递 可以提高效...... <阅读全文>

const与define的区别

参考答案:define只是用来做文本替换, define 常量的生命周期止于编译期,它存在于程序的代码段,在实际程序中它只是一个常数,一个命令中的参数并没有实际的存在; const 常量存在于程序的数据段,并在堆...... <阅读全文>

什么是“野指针”?

“野指针”不是NULL指针,而是指向“垃圾”的内存指针,其主要成因是:指针变量没有被初始化,或者指针p被free或者delete之后,没有置为NULL。 <阅读全文>

指针数组和数组指针的区别?

指针数组是数组,数组指针是指针 指针数组指一个数组里存放的都是一个类型的指针 例如:int*a[10]; 数组指针是指向一维或者多维数组的指针 例如 int*b =new int[10]; <阅读全文>

常量指针和指针常量的区别?

常量指针,它是一个指向常量的指针。常量指针指向一个常量,是防止对指针误操作出现修改常 量这样的错误针是指指针,指针所指向的地址的内容是不可修改的。 指针常量:它首先是一个常量,然后才是一个指针。指...... <阅读全文>

什么是内存泄露?

内存泄露是指程序中动态分配了内存,但是在程序结束时没有释放这 部分内存 从而造成那一部分内存不可用的情况; <阅读全文>

指针和引用有什么区别

① 引用必须被初始化,指针不必; ② 引用初始化后不能改变,指针可以改变所指的对象; ③ 不存在指向空值的引用,但是存在指向空值的指针。 <阅读全文>

如何判断一段程序是由 C 编译程序还是由 C++ 编译程序编译的?

参考答案: #ifdef __cplusplus cout <阅读全文>

版权声明:本站大部分内容为原创! 另有少部分内容整理于网络,如需转载本站内容或关切版权事宜请联系站长。未经允许,严禁复制转载本站内容,否则将追究法律责任。 本站欢迎与同类网站建立友情链接,请联系QQ:176687814