设为首页 加入收藏

TOP

C++笔试面试题 从网上整理的,带答案(五)
2014-11-24 01:23:07 来源: 作者: 【 】 浏览:49
Tags:笔试 试题 网上 整理 答案
在某种程度上,游标可以看作是句柄( handle )。通常情况下游标( iterator )的类型可以有所变化,这样容器也会有几种不同方式的转变:


iterator—— 对于除了 vector 以外的其他任何容器,你可以通过这种游标在一次操作中在容器中朝向前的方向走一步。这意味着对于这种游标你只能使用 “++” 操作符。而不能使用 “–” 或 “+=” 操作符。而对于 vector 这一种容器,你可以使用 “+=” 、 “—” 、 “++” 、 “-=” 中的任何一种操作符和 “” 、 “>=” 、 “==” 、 “!=” 等比较运算符。
——————————————————————————————–
116. C++ 中的 class 和 struct 的区别
从语法上,在 C++ 中(只讨论 C++ 中)。 class 和 struct 做类型定义时只有两点区别:
(一)默认继承权限。如果不明确指定,来自 class 的继承按照 private 继承处理,来自 struct 的继承按照 public 继承处理;
(二)成员的默认访问权限。 class 的成员默认是 private 权限, struct 默认是 public 权限。
除了这两点, class 和 struct 基本就是一个东西。语法上没有任何其它区别。


不能因为学过 C 就总觉得连 C++ 中 struct 和 class 都区别很大,下面列举的说明可能比较无聊,因为 struct 和 class 本来就是基本一样的东西,无需多说。但这些说明可能有助于澄清一些常见的关于 struct 和 class 的错误认识:
( 1 )都可以有成员函数;包括各类构造函数,析构函数,重载的运算符,友元类,友元结构,友元函数,虚函数,纯虚函数,静态函数;
( 2 )都可以有一大堆 public/private/protected 修饰符在里边;
( 3 )虽然这种风格不再被提倡,但语法上二者都可以使用大括号的方式初始化:


A a = {1, 2, 3}; 不管 A 是个 struct 还是个 class ,前提是这个类 / 结构足够简单,比如所有的成员都是 public 的,所有的成员都是简单类型,没有显式声明的构造函数。
( 4 )都可以进行复杂的继承甚至多重继承,一个 struct 可以继承自一个 class ,反之亦可;一个 struct 可以同时继承 5 个 class 和 5 个 struct ,虽然这样做不太好。
( 5 )如果说 class 的设计需要注意 OO 的原则和风格,那么没任何理由说设计 struct 就不需要注意。
( 6 )再次说明,以上所有说法都是指在 C++ 语言中,至于在 C 里的情况, C 里是根本没有 “class” ,而 C 的 struct 从根本上也只是个包装数据的语法机制。
—————————————————————


最后,作为语言的两个关键字,除去定义类型时有上述区别之外,另外还有一点点: “class” 这个关键字还用于定义模板参数,就像 “typename” 。但关键字 “struct” 不用于定义模板参数。


在模版中,类型参数前面可以使用class或typename,如果使用struct,则含义不同,struct后面跟的是“non-type template parameter”,而class或typename后面跟的是类型参数。
template
void f(X x)
{
}
//出错信息:d:codecpptestcpptestcpptest.cpp(33) : error C2065: ‘X’ : undeclared identifier


关于使用大括号初始化


class 和 struct 如果定义了构造函数的话,都不能用大括号进行初始化


如果没有定义构造函数, struct 可以用大括号初始化。


如果没有定义构造函数,且所有成员变量全是 public 的话,可以用大括号初始化。


关于默认访问权限


class 中默认的成员访问权限是 private 的,而 struct 中则是 public 的。


关于继承方式


class 继承默认是 private 继承,而 struct 继承默认是 public 继承。


关于模版


在模版中,类型参数前面可以使用 class 或 typename ,如果使用 struct ,则含义不同, struct 后面跟的是 “non-type template parameter” ,而 class 或 typename 后面跟的是类型参数。


class 中有个默认的 this 指针, struct 没有
不同点:构造函数,析构函数 this 指针
——————————————————————————————–
117. 有关重载函数


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


c++ 函数同名不同返回值不算重载!函数重载是忽略返回值类型的。


成员函数被重载的特征有:
1) 相同的范围(在同一个类中);
2) 函数名字相同;
3) 参数不同;
4) virtual 关键字可有可无。


5) 成员函数中 有无 const ( 函数后面 ) 也可判断是否重载
——————————————————————————————–
118. 数据库与 T-SQL 语言


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


关系数据库以关系模型为基础,它有以下三部分组成:
● 数据结构 —— 模型所操作的对象、类型的集合
● 完整性规则 —— 保证数据有效、正确的约束条件
● 数据操作 —— 对模型对象所允许执行的操作方式
关系( Relation )是一个由行和列组成的二维表格,表中的每一行是一条记录( Record ),每一列是记录的一个字段( Field )。表中的每一条记录必须是互斥的,字段的值必须具有原子性。


——————————————————————————————–
120.SQL 语言概述


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


起来是一个很简单的问题,每一个使用过 RDBMS 的人都会有一个概念。


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


原子性:组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分


一致性:在事务处理执行之前和之后,数据是一致的。


隔离性:一个事务处理对另一个事务处理没有影响。


持续性:当事务处理成功执行到结束的时候,其效果在数据库中被永久纪录下来。
——————————————————————————————–
121.C 语言中结构化程序设计的三种基本控制结构


顺序结构
选择结构
循环结构
——————————————————————————————–
122.CVS 是什么


cvs ( Concurrent Version System ) 是一个版本控制系统。使用它,可以记录下你的源文件的历史。


例如,修改软件时可能会不知不觉混进一些 bug ,而且可能过了很久你才会察觉到它们的存在。有了 cvs ,你可以很容易地恢复旧版本,并从中看出到底是哪个修改导致了这个 bug 。有时这是很有用的。


CVS 服务器端对每个文件维护着一个修订号 , 每次对文件的更新,都会使得文件的修订号加 1 。在客户端中也对每个文件维

首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇c/c++经典面试题 下一篇数组名与指针典型面试题的分析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: