browser icon
You are using an insecure version of your web browser. Please update your browser!
Using an outdated browser makes your computer unsafe. For a safer, faster, more enjoyable user experience, please update your browser today or try a newer browser.

咬文嚼字

Posted by on 2005 年 10 月 05 日

你可以任意转载本文,但请在转载后的文章中注明作者和原始链接。
媒体约稿请联系 titilima_AT_163.com(把“_AT_”换成“@”)。

前些日子和一位网友聊了聊天,于是乎我便萌生了写这么一篇文字的想法。当然,这仅是我一家之言,我也自认并非一个振臂一呼应者云集的英雄,所以这篇文字权且聊作诸位看官代码之余解闷之用吧。

overload与override

overload在OOP的领域中通常译作“重载”,是多态性的一种具体表现方式。(台湾将其译为“过载”,大抵是取了over的本义。)以函数的重载为例,是指多个函数共享同一个函数名,但针对不同的参数类型来提供不同的具体实现,如:

int Max( int a, int b );
double Max( double a, double b );

在上面的例子中,函数Max被重载,以适应int与double的不同需要。

诸位知道,中国的汉字文化博大精深,多音字就乃其中一大特色。于是乎,问题来了:“重载”的“重”,应如何发音呢?

一种说法是,由于overload本义为“超载、超过负荷”,所以“重”应读作“zhòng”。

我个人认为,在这里根据重载的行为,“重”应取“重复、重叠”之意,所以应读作“chóng”。而且,在微软拼音输入法2003中,亦是将“重载”词条拼作了“chóng”。

再来谈override,这个词通常译作“重写”或“改写”,指派生类覆盖其父类成员函数的行为,如:

class A
{
public:
    void f()
    {
        cout << "A::f()" << endl;
    }
};

class B : public A
{
public:
    void f() // override!
    {
        cout << "B::f()" << endl;
    }
};

现在有些说法将override与overload混为一谈,如“重载B类的成员函数f”——其实描述的行为应该是override,也就是重写或改写。

模板

首先在这里说句题外话:“模板”的“模”应该如何发音?我发现,身边大多数的朋友喜欢发音为“mó”——当然我以前也是这么发音的。后来使用拼音输入法输入这个词语的时候,我才发现“模”在“模板”中应该读“mú”。字典上对“mú”音的解释为:使材料压制或浇灌成一定形状的工具。参考模板本身的特点,我觉得大抵也正是应该取“mú”音为佳。但是“mú板”又远远不及“mó板”读起来顺口,所以后来我但凡遇到这个词,一概发音为“template”。

上面这段文字是拙作《水煮多态》一文中的一部分,也就是现在“模板”一词的发音问题。说起来我发现这个问题,是一次翻译技术文章的时候。其时我正在翻译一篇template相关的文章,但是遇到了中文“模板”一词的时候,我却发现用“mó bǎn”的拼音找不到这个词组。于是我便向字典求助,最后才发现这个词应当拼作“mú bǎn”。

咬文嚼字

现在是到了该发点议论的时候了。我觉得无论是“重载”和“模板”发音的问题,还是把override和overload混为一谈的问题,归根到底还是国内对于用语并不是很统一之故。以两本C++最权威的著作《C++程序设计语言》与《C++ Primer》的中文版为例,这两本书中函数重载的章节并没有任何一处注音,于是乎在中国程序员口头上流传出来的读音也就出现了这两个不同的版本。

那么,我们应该如何对待这种分歧?我以为弄清了便罢,弄不清就用英语,完全没有必要像我一样大费周章地去引经据典——这就颇有些孔乙己四个回字的迂腐学究气了。据说,有个Java论坛中还有篇热贴是专门讨论“重载”发音问题的,这就更小题大做、得不偿失了。毕竟21世纪最贵的不仅仅是人才,还有时间。

本文开头提到的那位网友曾经对我说过,在别人面前如果说错了,岂不会被笑作外行?我觉得这种担心是多余的,毕竟程序员的功夫体现在编码和程序设计思想上,而不是哪个汉字上。说起来山西有种名酒叫汾酒,可是多少年了,无论在现实中还是各影视作品中,它在绝大多数情况下都被读作“fēn jiǔ”,而它的真正读音却是“fén jiǔ”。在我的经历中,这个读音在山西以外的地方是很容易被读错的,不过这又有什么呢?即使是说错了,说起“fēn jiǔ”来,大家仍然都知道是那种“牧童遥指杏花村”的酒,这不就足够了么?

订阅本站

没有评论

(Required)
(Required, will not be published)