好文档 - 专业文书写作范文服务资料分享网站

C++面试宝典

天下 分享 时间: 加入收藏 我要投稿 点赞

修饰后的函数名称可能是这样的: int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!

重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚绑定)。

13、多态的作用? 主要是两个:

1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用; 2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。

14、C++是不是类型安全的?

不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)。C#是类型安全的。

15、main 函数执行以前,还会执行什么代码? 全局对象的构造函数会在main 函数之前执行。

16、 描述内存分配方式以及它们的区别?

(1) 从静态存储区域分配。在程序编译的时候分配好了,这块内存在程序运行期间都存在。例如全局变量,static 变量。

(2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。 (3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。

17、struct 和 class 的区别

struct 的成员默认是公有的,而类的成员默认是私有的。struct 和 class 在其他方面是功能相当的。感觉上结构仅仅象一堆缺乏封装和功能的开放的内存位,而类就象活的并且可靠的社会成员,它有智能服务,有牢固的封装屏障和一个良好定义的接口。既然大多数人都这么认为,那么只有在你的类有很少的方法并且有公有数据(这种事情在良好设计的系统中是存在的!)时,你也许应该使用 struct 关键字,否则,你应该使用 class 关键字。

18、请说出const与#define 相比,有何优点?

Const作用:定义常量、修饰函数参数、修饰函数返回值三个作用。被Const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。

2) 有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。

19、求出两个数中的较大者

There are two int variables: a and b, don?t use “if”, “? :”, “switch”or other judgement statements, find out the biggest one of the two numbers.

答案:( ( a + b ) + abs( a - b ) ) / 2

20、C语言中结构化程序设计的三种基本控制结构 顺序结构 、选择结构 、循环结构

21、面的结构是合法的吗,如果是它做些什么? int a = 5, b = 7, c; c = a+++b;

上面的例子是完全合乎语法的。问题是编译器如何处理它?根据最处理原则,编译器应当能处理尽可能所有合法的用法。因此,上面的代码被处理成:

c = a++ + b;

因此, 这段代码持行后a = 6, b = 7, c = 12。

发现这个问题的最大好处是:代码编写风格,代码的可读性,代码的可修改性

22、SQL语言概述

SQL(结构化查询语言)是关系数据库语言的一种国际标准,它是一种非过程化的语言。通过编写SQL,我们可以实现对关系数据库的全部操作。 ●数据定义语言(DDL)——建立和管理数据库对象 ●数据操纵语言(DML)——用来查询与更新数据 ●数据控制语言(DCL)——控制数据的安全性

事务处理系统的典型特点是具备ACID特征。ACID指的是Atomic(原子的)、Consistent(一致的)、Isolated(隔离的)以及Durable(持续的),它们代表着事务处理应该具备的四个特征:

原子性:组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分 一致性:在事务处理执行之前和之后,数据是一致的。 隔离性:一个事务处理对另一个事务处理没有影响。

持续性:当事务处理成功执行到结束的时候,其效果在数据库中被永久纪录下来。

22、关系模型的基本概念

关系数据库以关系模型为基础,它有以下三部分组成: ●数据结构——模型所操作的对象、类型的集合 ●完整性规则——保证数据有效、正确的约束条件 ●数据操作——对模型对象所允许执行的操作方式

关系(Relation)是一个由行和列组成的二维表格,表中的每一行是一条记录(Record),每一列是记录的一个字段(Field)。表中的每一条记录必须是互斥的,字段的值必须具有原子性。

23、数据库与T-SQL语言

关系数据库是表的集合,它是由一个或多个关系模式定义。SQL语言中的数据定义功能包括对数据库、基本表、视图、索引的定义。

24、有关重载函数

(1)返回值类型不同构不成重载 (2)参数参数顺序不同能构成重载

(3)c++函数同名不同返回值不算重载!函数重载是忽略返回值类型的。 --------------------------------------------- 成员函数被重载的特征有:

1) 相同的范围(在同一个类中); 2) 函数名字相同; 3) 参数不同;

4) virtual关键字可有可无。

5) 成员函数中 有无const (函数后面) 也可判断是否重载

25、交换两个数的宏定义

交换两个参数值的宏定义为:. #define SWAP(a,b) (a)=(a)+(b);(b)=(a)-(b);(a)=(a)-(b);

C++程序员面试宝典(2)

1、Static 作用是什么

首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0。

2、什么是预编译,何时需要预编译?

预编译又称为预处理,是做些代码文本的替换工作,处理#开头的指令。比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等,就是为编译做的预备工作的阶段,主要处理#开始的预编译指令,预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。

c编译系统在对程序进行通常的编译之前,先进行预处理。

c提供的预处理功能主要有以下三种:1)宏定义 2)文件包含 3)条件编译 使用的情况:

(1)总是使用不经常改动的大型代码体。

(2)程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选

C++面试宝典

修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用
推荐度:
点击下载文档文档为doc格式
5qbc91edkm6d7jn4l204
领取福利

微信扫码领取福利

微信扫码分享