荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Second (石开), 信区: Program
标  题: C++语言常见问题解答(1-1)
发信站: 荔园晨风BBS站 (Wed Sep 19 11:53:48 2001), 转信

    【中译对照表】

  底下列出本文出现的专有名词、其他重要的词儿,与译者采用的中译,视
上下文情况,它们也可能会有两种以上的译名。可能的话,括号中也会附上一
些其他书籍文章中常见的译法。

        abstraction             抽象化.
        access                  存取.
        access function         存取函数.
        alias                   别名.
        argument                引数.
        arity                   元数.
        assignment              设定.
        associativity           结合律.
        base class              基底类别.
        binding                 系结.
        call                    呼叫.
        class                   类别、物件类别.

        composition             成份、零件.
        constructor             建构子(建构元).
        container               容器.
        container class         容器类别.
        data member             资料成员.
        declaration             宣告
                  <名词>.
        declare                 宣告
                    <动词>.
        default                 预设、内定.
        define                  定义
                     <动词>.
        definition              定义
                   <名词>.
        dereference             解参用、解参考.
        derive                  衍生.
        destructor              解构子(解构元).
        dispatch                分派、函数分派.
        dynamic                 动态.
        encapsulation           封装、封装性.
        exception               例外、例外状况(异常).
        exception handling      例外处理.
        explicit                明显的、外显的
               <形容词>.
        expression              运算式.
        friend                  夥伴.
        function                函数.
        genericity              泛型.
        header file             标头档(引入档、含括档).

        hide                    遮蔽.
        hierarchy               阶层.
        identity                个体识别.
        implement               实作
                   <动词>.
        implementation          实作
                 <名词>.
        inherit                 继承
                    <动词>.
        inheritance             继承
                  <名词>.
        inline                 行内(列内、内嵌).
        inspector               查询子.
        instance              案例、实体(执行个体).
        instantiate             案例化、实体化
             <动词>.
        instantiation           案例
                 <名词>.
        keyword                 关键字、保留字.
        mangle                  签名编码
                   <动词>.
        mangling                签名编码
                  <名词>.
        member                  成员.
        member function         成员函数.
        member object           成员物件.
        method                 运作方法、运算方法.
        module                  模组.
        multiple inheritance    多重继承.
        mutator                 更动子.
        object                  物件(个体).
        OO                    物件导向(个体导向).

        OOP                    物件导向程式设计.
        operator                运算子.
        overload                多载(过荷、负载)
             <动词>.
        overloading             多载(过荷、负载)
           <名词>.
        override                覆盖、改写.
        parameter               参数.
        persistence             持续性(永续性、持固性)
        <名词>.
        persistent object       持续性物件.
        pointer                 指标.
        polymorphism            多型(同名异式).
        precedence              优先序.
        pretty printer          美编工具.
        private                 私有.
        protected               保护.
        prototype               原型、函数原型(雏型)
.
        public                  公共、公有.
        pure virtual function   纯虚拟函数.
        reference               参考、参考值.
        relation                关系.
        return value            传回值.
        semantics               语意.
        signature               签名、型态签名.
        smart pointer           聪明的指标.
        specialization          特异化、特殊化.
        statement               陈述、指令(指述).

        static                  静态.
        structure               结构、记录.
        subclass                子类别、子代类别.
        subtype                 子型别、子型态.
        superclass              父类别、亲代类别.
        syntax                  语法、文法.
        template                样版(模版).
        throw                   丢出.
        type                    型态、型别.
        virtual                 虚拟.
        virtual function        虚拟函数.


    【中译版本异动纪录】

    85.02. 对整篇译文做比较多一点的修饰。

    84.05. 修饰些 method 相关的译名。

    84.03. 修饰些 persistence、instance 相关的译名。

    84.01. 一些译文修饰、增加此中译文件的 ftp 栖身处说明。
           将覆盖 (override) 与遮蔽 (hide) 二词更明显地区分开
来。
           对「聪明的指标」(smart pointer) 加一点诠释。

    83.12. 一些译文修饰、将 "method" 统一译为「运算方法」。

    83.11. 第一次发布,原载於交大资科系刊「资讯人园地」。


    底下就是此 USENET comp.lang.C++ FAQ 文件的正文。

======================
■□ 第1节:内容介绍
=======================

DOCUMENT:    Frequently-Asked-Questions for comp.lang.c++
REVISION:    Jan 31, 1996
    文件不等於书本:这份 C++ FAQ 文件和「FAQ 书」是不一样的。
“FAQ 书 ("C++ FAQs", Addison-Wesley, 1995) 是这篇文件的五倍大。
底下有更详细的介绍。
     AUTHOR:      Marshall P. Cline, Ph.D.
              Paradigm Shift, Inc.
              One Park St. / Norwood, NY  13668
                voice: 315-353-6100
                fax:   315-353-6110
                email: cline@parashift.com

   版权声明:Copyright (C), 1991-96 Marshall P. Cline, Ph.D.
   复制本文件全部或部份的内容,若合乎下述诸项要求,则允许之:不得为转售之
目的而制作或传播任何复制品(但可索取名义上的传播手续费),并且作者栏、版权声
明及责任事项的部份,要一字不漏地、醒目地显示出来。若您需要此处未提及的授权事
项,请洽本作者。
      一切请以原文为准。译者对它们亦概不负责…… ;->


=================================
● 1A:「FAQ 书」与「FAQ 文件」
=================================

Addison-Wesley 已出版了由 Cline 与 Lomow 合著的 "C++ FAQs" (1995, I
SBN
0-201-58958-3) 一书,许多人对该书和这篇文件的关系感到好奇,一些没看过该书

的人,也担心本文是否会和它相同。此处将回答这些问题。

「FAQ 书」(於 Oct. 94 上市)大体上和本文的观念一致,但该书约为本文的5倍

大,还包括了数千则交互参考资讯、参考资料、索引项目,及许多的程式例子。

=============
● 1B:目录
=============

========== POSTING #1 ==========

第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节:输入/输出: 和
---------------------------------------------
Q28:该怎样替 "class Fred" 提供输出功能?
Q29:为什麽我该用  而不是以前的 ?
Q30:为什麽我处理输入时,会超过档案的结尾?
Q31:为什麽我的程式执行完第一次回圈後,会对输入的要求不加理睬?
Q32:在 DOS 及 OS/2 的 binary 模式下,要怎样来 "reopen" cin 及 cou
t?

========== 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++
--
                            既然热爱生命
                            那么,
                            一切都在意料之中。

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.52.239]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店