在C/C++中static有什么用途?(请至少说明两种)

题目

在C/C++中static有什么用途?(请至少说明两种)

参考答案和解析
正确答案: (1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
(2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
(3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

请认真阅读以下关于某传输系统的技术说明、状态转换图及C++代码,根据要求回答问题1~问题2。

[说明]

传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、 StayOpen(保持打开)和Closing(正在关闭)5种状态。触发状态的转换事件有click、complete和timeout3种。事件与其相应的状态转换如图7-15所示。

下面的[C++代码1]与[C++代码2]分别用两种不同的设计思路对传输门进行状态模拟,请填补代码段中的空缺语句。

[C++代码1]

请将以上[C++代码1]与[C++代码2]程序段中的(1)~(7)空缺处的语句填写完整。


正确答案:这是一道要求读者掌握状态转换图的程序设计与实现的综合题。本试题的解答思路如下。 根据(1)空缺处所在的程序段给出的注释信息“发生crick事件时进行状态转换”可知(1)空缺处所在的方法为click表示当发生crick事件时应该发生什么状态转换。找出传输门响应事件与其状态转换图(见图7-15)与crick事件相关的内容并特别注意箭头所指的方向。由于发生click事件前的状态CLOSED、CLOSING分别跳转到状态OPENING因此(1)空缺处所填写的内容是“state==CLOSED‖state==CLOSING”。 同理由图7-15所示中的状态转换关系可知发生click事件前的状态OPENING、STAYOPEN分别跳转到状态CLOSING即(2)空缺处所填写的内容是“state==OPENING‖state==STAYOPEN”;发生 click事件前的状态OPEN跳转到状态STAYOPEN即(3)空缺处所填写的内容是“state==OPEN”。 仔细阅读[C++代码2]程序段由语句private DoorState state=CLOSED;可知类Door的state成员变量用于记录类Door所处的状态而state变量的类型为Doorstate*。由语句“virtual void click() {}”、“virtual void complete() {}”和“virtual void timeout() {}”可知Doorstate中分别具有click、timeout和 complete方法用来响应对应的事件。根据(4)空缺处所在程序段“void Door∷click()”可得(4)空缺处所填写的内容是“state->click()”。 同理根据(5)空缺处所在程序段“void Door∷timeout()”可得(5)空缺处所填写的内容是“state->timeout()”;根据(6)空缺处所在程序段“void Door∷complete()”可得(6)空缺处所填写的内容是“state->complete()”。 根据(7)空缺处所在程序段给出的注释信息“定义一个基本的Closed状态”和语句“void DoorClosed∷click()”可知(7)空缺处所填写的内容与传输门当前状态为CLOSED且发生Click事件时状态的迁移有关。结合如图7-16所示中的状态转换关系可知在Click事件下CLOSED状态将迁移到 OPENING因此(7)空缺处应该将传输门的状态设置为OPENING。由于Doorstate变量存储了当前其存储的传输门的实例因此可直接调用其方法setState设置状态。同时考虑到传输门的状态采用类的实例变量表示故(7)空缺处所填写的内容为“door->setState(door->OPENING)”。
这是一道要求读者掌握状态转换图的程序设计与实现的综合题。本试题的解答思路如下。 根据(1)空缺处所在的程序段给出的注释信息“发生crick事件时进行状态转换”可知,(1)空缺处所在的方法为click,表示当发生crick事件时应该发生什么状态转换。找出传输门响应事件与其状态转换图(见图7-15)与crick事件相关的内容,并特别注意箭头所指的方向。由于发生click事件前的状态CLOSED、CLOSING分别跳转到状态OPENING,因此(1)空缺处所填写的内容是“state==CLOSED‖state==CLOSING”。 同理,由图7-15所示中的状态转换关系可知,发生click事件前的状态OPENING、STAYOPEN分别跳转到状态CLOSING,即(2)空缺处所填写的内容是“state==OPENING‖state==STAYOPEN”;发生 click事件前的状态OPEN跳转到状态STAYOPEN,即(3)空缺处所填写的内容是“state==OPEN”。 仔细阅读[C++代码2]程序段,由语句private DoorState state=CLOSED;可知,类Door的state成员变量用于记录类Door所处的状态,而state变量的类型为Doorstate*。由语句“virtual void click() {}”、“virtual void complete() {}”和“virtual void timeout() {}”可知,Doorstate中分别具有click、timeout和 complete方法用来响应对应的事件。根据(4)空缺处所在程序段“void Door∷click()”可得,(4)空缺处所填写的内容是“state->click()”。 同理,根据(5)空缺处所在程序段“void Door∷timeout()”可得,(5)空缺处所填写的内容是“state->timeout()”;根据(6)空缺处所在程序段“void Door∷complete()”可得,(6)空缺处所填写的内容是“state->complete()”。 根据(7)空缺处所在程序段给出的注释信息“定义一个基本的Closed状态”和语句“void DoorClosed∷click()”可知,(7)空缺处所填写的内容与传输门当前状态为CLOSED且发生Click事件时状态的迁移有关。结合如图7-16所示中的状态转换关系可知,在Click事件下CLOSED状态将迁移到 OPENING,因此(7)空缺处应该将传输门的状态设置为OPENING。由于Doorstate变量存储了当前其存储的传输门的实例,因此可直接调用其方法setState设置状态。同时考虑到传输门的状态采用类的实例变量表示,故(7)空缺处所填写的内容为“door->setState(door->OPENING)”。

第2题:

C++中的虚继承是解决什么问题的?请举例说明。


正确答案:
 

第3题:

static有什么用途?(请至少说明两种)


正确答案:
1.限制变量的作用域
2.设置变量的存储域

第4题:

在C++中,protected类成员访问控制有什么作用?


正确答案:C++中引进protected成员保护控制,缓解了数据封装与继承的矛盾。在基类中声明为protected的成员可以被派生类使用,但不能被基类的实例用户使用,这样能够对修改基类的内部实现所造成的影响范围(只影响子类)进行控制。protected成员保护控制的引进使得类有两种接口:与实例用户的接口和与派生类用户的接口。

第5题:

商业组织中采用的培训方式有哪些?请至少简述两种。


答案:
解析:
商业组织为了加强培训的效果,常常会依据不同的课程和不同的场合采用不同的培训方式。(1)情景模拟培训法。所谓情景模拟培训打破了传统的以讲授为主的教学模式,通过培训师创设现实和虚拟环境,创设问题情景、故事情景,让学员在各种情景中作出思考和行为,并对此行为后果进行反思。经过培训启发,达到掌握知识、开启智慧的目的。这种方法突出操作性,讲求趣味性,注重实效性,兼顾学理性,具有理论与实际高度结合、教师与学员高度投入、学员自身经验与模拟情景高度吻合的特点,而且可以使学员看到所做决策在类真实的虚拟环境中可能产生的影响。开展情景模拟培训,要把握四个要点:①培训情境一定要切中培训主题;②开展培训前一定要精心设计、合理安排,综合考虑方方面面,使活动安排得高效紧凑;③在培训中积极营造氛围,让每一个参与者都融入到培训的氛围中;④培训结束后,要及时展开培训效果检测与评价。(2)案例分析法。又称个案研究法,是指把实际工作中出现的问题作为案例,交给受训学员研究分析,培养学员们的分析能力、判断能力、解决问题及执行业务能力的培训方法。该方法由哈佛大学开发完成,后被哈佛商学院用于培养高级经理和管理精英的教育实践。通过使用这种方法对员工进行培训,能明显地增加员工对公司各项业务的了解,培养员工间良好的人际关系,提高员工解决问题的能力,增加公司的凝聚力。开展案例分析,要把握七个要点:①由于案例是从实际工作中收集的,学员无法完全了解个案的全部背景及内容。因此材料发完后,应仔细解释说明并要接受咨询,以确定他们对材料的掌握正确无误。②若小组在研究问题时思考方向与训练内容有误差,指导者应及时修正。③问题的症结可能会零散而繁多,因而归纳出来的对策也会零乱不整,因此小组有必要根据重要性及相关性整理出适当的对策。④各组挑出最理想策略时,若指导员发现各组提出的对策仅为没有新意的一般性对策,则指导员应加以提示,以促使他们更深入地思考。⑤在全体讨论解决问题的策略时,其他几组提出质询,并阐明与自己观点差异所在,以相互激发灵感,然后再作进一步的讨论。⑥指导员进行总结时,既要对各组提出的对策优缺点进行点评,又要对个案的解决策略进行剖析,同时还可以引用其他案例进一步说明问题。⑦指导员挑选案例时,应根据研习课程的目的,挑选适当的个案。

第6题:

const 有什么用途?(请至少说明两种)


正确答案:
 

第7题:

在语法教学中,语法练习的形式有哪几种(10分)?请对任意两种练习形式进行举例说明(10分)。


答案:
解析:
(1)语法练习的形式
①机械型练习。这类练习的作用是帮助学生熟记、掌握语法规则和形式,一般使用互不连接的单独结构、短语或句子。常见的练习形式有填空、选择和替换等。
②意义型练习。这类练习强调形式的正确理解和输出,但同时涉及了意义。练习仍然使用互不连接的单独结构,答案通常是确定的。常见的练习形式有:基于意义的填空或选择、配对、改错及合并句子、汉译英或英译汉等。
③交际型练习。这类练习最有使用价值和趣味性,它强调以交际为目的的意义输出或理解.在交际过程中同时注意结构的运用。常见的练习形式有:两人活动、小组讨论活动、角色扮演活动、头脑风暴活动等。
(2)练习举例
①机械型练习——替换练习
T:I’m trying to find a book in the box.
S:I’m trying to find a book in the box.
T:shelf.
S:I’m trying to find a book in the shelf.
T:bed.
S:I’m trying to find a book in the bed.
⑦意义型练习——汉泽英
我打算在我家乡买套房子。
1 want to buy a house in my hometown.

第8题:

请用150字以内的文字简要说明[C++代码1]、[C++代码2]这两种对传输门进行状态模拟的设计思路的区别之处。


正确答案:[C++代码1]和[C++代码2]区别是[C++代码2]将状态间的转换规则封装到具体的类中当状态转换图的转换规则发生变化时只需更改部分对应类中的状态迁移规则易于维护、移植。由于[C++代码1]中的迁移规则散落在程序中因此维护起来较为困难。
[C++代码1]和[C++代码2]区别是,[C++代码2]将状态间的转换规则封装到具体的类中,当状态转换图的转换规则发生变化时,只需更改部分对应类中的状态迁移规则,易于维护、移植。由于[C++代码1]中的迁移规则散落在程序中,因此维护起来较为困难。

第9题:

简述auto、register、static三个关键字在程序中的用途。


正确答案: ①auto自动型或堆栈型,采用堆栈方式存储空间,声明的变量只能在某个程序范围内使用,当程序运行超出该变量的作用域时,释放空间。
②register寄存器型,将所声明的变量放入CPU的寄存器存储空间中,加快程序运行速度,只能用于声明int和char。
③extern外部参照引用型,声明的变量是想引用在其他文件中函数体外部声明的变量(不太常用)。
④static静态存储类型,可在函数体内外声明,在内声明时与auto的区别,static存储类型的变量在内存中以固定地址存放。另外,静态数据成员在声明时必须在前面加关键字static。

第10题:

什么是分子杂交?请举例说明其用途。


正确答案: 分子杂交是用一个DNA或RNA单链与另一被测DNA单链形成双链,以测定某特异序列是否存在的方法。这种方法已成为遗传学和分子生物学等生命学科中最为普遍和重要的方法之一。
如:Northern杂交:在提取某种生物或组织的总RNA或mRNA后,用含有变性剂的琼脂糖凝胶电泳分离RNA,分离后再将凝胶上的RNA带吸印到尼龙膜上,在液相中和标记的核酸探针进行杂交。用此方法可以测定某基因表达的时空特异性。
基因芯片(Genechip)技术:是指通过微阵列(Microarray)技术将高密度DNA片段阵列通过高速机器人或原位合成方式以一定的顺序或排列方式使其附着在如玻璃片等固相表面,以荧光标记的DNA探针,借助碱基互补杂交原理,进行大量的基因表达及监测等方面研究的最新革命性技术。基因表达谱(gene expression pattern)芯片的应用最为广泛,技术上也最成熟。这种芯片可以检测整个基因组范围的众多基因在mRNA表达水平的变化。