分享
 
 
 

转贴:C++语言常见问题解:索引

王朝c/c++·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

这是我从台湾的http://www.cis.nctu.edu.tw/chinese/doc/research/c++/C++FAQ-Chinese/发现的《C++ Frequently Asked Questions》的繁体翻译,作者是:叶秉哲,也是《C++ Programming Language》3/e繁体版的译者,该文章是非常的好,出于学习用途而将它转贴,本人未取得作者的授权,原文章的版权仍然归属原作者.

C++语言常见问题解

第1节:内容介绍

----------------

⊙1A:「FAQ 书」与「FAQ 文件」

⊙1B:目录

⊙1C:术语及常用的缩写

第2节:我该如何参与讨论?(发信之前请务必一读)

------------------------------------------------

Q1:我该在哪个讨论区中发问?

Q2:我该怎么提出「我的程序有毛病」的问题呢?

第3节:周遭的﹑管理上的事项

----------------------------

Q3:什么是 OOP?什么是 C++?

Q4:C++ 的优点是什么?

Q5:谁在用 C++?

Q6:有任何 C++ 标准化方案在进行吗?

Q7:该到哪里索取最新的 ANSI-C++ 标准草案?

Q8:C++ 对 ANSI-C 回溯兼容吗?

Q9:多久才能学会 C++?

第4节:C++ 的基础

------------------

Q10:什么是类别(class)?

Q11:什么是对象(object)?

Q12:什么是参考(reference)?

Q13:如果设定某值给参考会怎么样?

Q14:怎样才能将参考改设成别的对象?

Q15:何时该用参考,何时又该用指针?

Q16:行内函数是做什么的?

第5节:建构子和解构子

----------------------

Q17:建构子(constructor)是做什么的?

Q18:怎样才能让建构子呼叫另一个同处一室的建构子?

Q19:解构子(destructor)是做什么的?

第6节:运操作数多载

------------------

Q20:运操作数多载(operator overloading)是做什么的?

Q21:哪些运操作数可以/不能被多载?

Q22:怎样做一个 "**"「次方」运操作数?

第7节:伙伴

------------

Q23:伙伴(friend)是什么?

Q24:「伙伴」违反了封装性吗?

Q25:伙伴函数的优缺点?

Q26:「伙伴关系无继承及递移性」是什么意思?

Q27:应该替类别宣告个成员函数,还是伙伴函数?

第8节:输入/输出:<iostream.h> 和 <stdio.h>

---------------------------------------------

Q28:该怎样替 "class Fred" 提供输出功能?

Q29:为什么我该用 <iostream.h> 而不是以前的 <stdio.h>?

Q30:为什么我处理输入时,会超过档案的结尾?

Q31:为什么我的程序执行完第一次循环后,会对输入的要求不加理睬?

Q32:在 DOS 及 OS/2 的 binary 模式下,要怎样来 "reopen" cin 及 cout?

========== POSTING #2 ==========

第9节:自由内存管理

----------------------

Q33:"delete p" 会删去 "p" 指针,还是它指到的资料,"*p" ?

Q34:我能 "free()" 掉由 "new" 配置到的、"delete" 掉由 "malloc()" 配置到的

内存吗?

Q35:为什么该用 "new" 而不是老字号的 malloc() ?

Q36:为什么 C++ 不替 "new" 及 "delete" 搭配个 "realloc()" ?

Q37:我该怎样配置/释放数组?

Q38:万一我忘了将 "[]" 用在 "delete" 由 "new Fred[n]" 配置到的数组,会发生

什么事?

Q39:成员函数做 "delete this" 的动作是合法的(并且是好的)吗?

Q40:我该怎么用 new 来配置多维数组?

Q41:C++ 能不能做到在执行时期才指定数组的长度?

Q42:怎样确保某类别的对象都是用 "new" 建立的,而非区域或整体/静态变量?

第10节:除错与错误处理

------------------------

Q43:怎样处理建构子的错误?

Q44:如果建构子会丢出例外的话,该怎么处理它的资源?

第11节:Const 正确性

----------------------

Q45:什么是 "const correctness"?

Q46:我该早一点还是晚一点让东西有常数正确性?

Q47:什么是「const 成员函数」?

Q48:若我想在 "const" 成员函数内更新一个「看不见的」资料成员,该怎么做?

Q49:"const_cast" 会不会丧失最佳化的可能?

第12节:继承

--------------

Q50:「继承」对 C++ 来说很重要吗?

Q51:何时该用继承?

Q52:怎样在 C++ 中表现出继承?

Q53:把衍生类别的指针转型成指向它的基底,可以吗?

Q54:Derived* --> Base* 是正常的;那为什么 Derived** --> Base** 则否?

Q55:衍生类别的数组「不是」基底的数组,是否表示数组不好?

⊙12A:继承--虚拟函数

Q56:什么是「虚拟成员函数」?

Q57:C++ 怎样同时做到动态系结和静态型别?

Q58:衍生类别能否将基底类别的非虚拟函数覆盖(override)过去?

Q59:"Warning: Derived::f(int) hides Base::f(float)" 是什么意思?

⊙12B:继承--一致性

Q60:我该遮蔽住由基底类别继承来的公共成员函数吗?

Q61:圆形 "Circle" 是一种椭圆 "Ellipse" 吗?

Q62:对「圆形是/不是一种椭圆」这两难问题,有没有其它说法?

⊙12C:继承--存取规则

Q63:为什么衍生的类别无法存取基底的 "private" 东西?

Q64:"public:"﹑"private:"﹑"protected:" 的差别是?

Q65:当我改变了内部的东西,怎样避免子类别被破坏?

⊙12D:继承--建构子与解构子

Q66:若基底类别的建构子呼叫一个虚拟函数,为什么衍生类别覆盖掉的那个虚拟函

数却不会被呼叫到?

Q67:衍生类别的解构子应该外显地呼叫基底的解构子吗?

⊙12E:继承--Private 与 protected 继承

Q68:该怎么表达出「私有继承」(private inheritance)?

Q69:「私有继承」和「成份」(composition) 有多类似?

Q70:我比较该用哪一种:成份还是私有继承?

Q71:我应该用指针转型方法,把「私有」衍生类别转成它的基底吗?

Q72:保护继承 (protected inheritance) 和私有继承有何关连?

Q73:"private" 和 "protected" 的存取规则是什么?

第13节:抽象化(abstraction)

-------------------------------

Q74:分离接口与实作是做什么用的?

Q75:在 C++ 里,我该怎样分离接口与实作(像 Modula-2 那样)?

Q76:ABC ("abstract base class") 是什么?

Q77:「纯虚拟」(pure virtual) 成员函数是什么?

Q78:怎样替整个类别阶层提供打印的功能?

Q79:何时该把解构子弄成 virtual?

Q80:虚拟建构子 (virtual constructor) 是什么?

========== POSTING #3 ==========

第14节:程序风格指导

----------------------

Q81:有任何好的 C++ 程序写作的标准吗?

Q82:程序撰写标准是必要的吗?有它就够了吗?

Q83:我们的组织该以以往 C 的经验来决定程序撰写标准吗?

Q84:我该在函数中间或是开头来宣告区域变量?

Q85:哪一种原始档命名惯例最好? "foo.C"? "foo.cc"? "foo.cpp"?

Q86:哪一种标头档命名惯例最好? "foo.H"? "foo.hh"? "foo.hpp"?

Q87:C++ 有没有像 lint 那样的指导原则?

第15节:Smalltalk 程序者学习 C++ 之钥

---------------------------------------

Q88:为什么 C++ 的 FAQ 有一节讨论 Smalltalk?这是用来攻击 Smalltalk 的吗?

Q89:C++ 和 Smalltalk 的差别在哪?

Q90:什么是「静态型别」?它和 Smalltalk 有多相似/不像?

Q91:「静态型别」与「动态型别」哪一种比较适合 C++?

Q92:怎样分辨某个 C++ 对象链接库是否属于动态型别的?

Q93:在 C++ 里怎样用继承?它和 Smalltalk 有何不同?

Q94:Smalltalk/C++ 不同的继承,在现实里导致的结果是什么?

Q95:学过「纯种」的 OOPL 之后才能学 C++ 吗?

Q96:什么是 NIHCL?到哪里拿到它?

第16节:参考与数值语意

------------------------

Q97:什么是数值以及参考语意?哪一种在 C++ 里最好?

Q98:「虚拟数据」是什么?怎么样/为什么该在 C++ 里使用它?

Q99:虚拟数据和动态数据有何差别?

Q100:我该正常地用指针来配置资料成员,还是该用「成份」(composition)?

Q101:动态配置成员对象有三个效率因素,它们的相对代价是多少?

Q102:"inline virtual" 的成员函数真的会被 "inline" 吗?

Q103:看起来我不应该用参考语意了,是吗?

Q104:参考语意效率不高,那么我是否应该用传值呼叫?

========== POSTING #4 ==========

第17节:和 C 连结/和 C 的关系

--------------------------------

Q105:怎样从 C++ 中呼叫 C 的函数 "f(int,char,float)"?

Q106:怎样才能建一个 C++ 函数 "f(int,char,float)",又能被 C 呼叫?

Q107:为什么 linker 有这种错误讯息:C/C++ 函数被 C/C++ 函数呼叫到?

Q108:该怎么把 C++ 类别的对象传给/传自 C 的函数?

Q109:C 的函数能不能存取 C++ 类别的对象资料?

Q110:为什么我总觉得 C++ 让我「离机器更远了」,不像 C 那样?

第18节:指向成员函数的指针

----------------------------

Q111:「指向成员函数的指针」和「指到函数的指针」的型态有差别吗?

Q112:怎样把指向成员函数的指针传给 signal handler﹑X event callback 等等?

Q113:当我想以成员函数做为中断服务例程 (ISR) 时,为什么编译器产生(型态不

符)的错误?

Q114:为什么我取不出 C++ 函数的地址?

Q115:怎样宣告指向成员函数的指针数组?

第19节:容器类别与 template

-----------------------------

Q116:怎样自一个连结串行/杂凑表等等里面,插入/存取/改变元素?

Q117:「样版」(template)的用意是什么?

Q118:"function template" 的语法/语意是什么?

Q119:"class template" 的语法/语意是什么?

Q120:什么是「参数化型别」(parameterized type)?

Q121:「泛型」(genericity)是什么?

第20节:链接库

----------------

Q122:怎样拿到 "STL"?

Q123:怎样 ftp 到 "Numerical Recipes" 附的程序?

Q124:为什么我的执行档会这么大?

第21节:特定系统的细节

------------------------

Q125:GNU C++ (g++) 把小程序造出大大的执行档,为什么?

Q126:有 YACC 的 C++ 文法吗?

Q127:什么是 C++ 1.2? 2.0? 2.1? 3.0?

Q128:如果签名编码标准化了,我能否将不同厂商编译器产生的程序代码连结起来?

第22节:其它的技术和环境的事项

--------------------------------

⊙22A:其它的技术事项

Q129:为什么有 static 资料成员的对象类别产生了 linker 错误?

Q130:"struct" 和 "class" 关键词差别在哪?

Q131:为什么不能以函数的传回值来多载(overload)它?

Q132:什么是「持续性」?什么是「持续性对象」?

Q133:为什么浮点数 (floating point) 这么不精确?为什么这段程序不会印出 0.43?

⊙22B:其它环境下的琐事

Q134:有任何 TeX 或 LaTeX 的宏,能处理 "C++" 的留白效果(spacing)吗?

Q135:在哪儿可拿到 C++2LaTeX 这个 C++原始码的 LaTeX 美编工具(pretty

printer)?

Q136:该到哪里取得 "tgrind" 这个 C++/C/etc 的原始码美编工具?

Q137:有给 GNU emacs 编辑器用的 C++-mode 吗?有的话,该怎么拿?

Q138:我要到哪儿得到和操作系统相关的 FAQs( 譬如:BC++﹑DOS﹑Windows 等等)?

Q139:为什么我的 DOS C++ 程序说 "Sorry: floating point code not linked"

“抱歉,浮点运算程序代码未连结进来”?

Q140:为什么当我没执行 BC45 IDE 的话,BC++ 做出来的 Windows 应用程序就不能用?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有