荔园在线

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

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


发信人: Dreamer (黄昏·落霞·萤火·街灯), 信区: SoftDev
标  题: 【C++】[FAQ]我该把const写在类型前面还是后面?
发信站: 荔园晨风BBS站 (Wed Jun 16 13:55:08 2004), 站内信件


Q: 我该把const写在类型前面还是后面?
A: 我是喜欢写在前面的。不过这只是个人口味的问题。“const T”和“T const
”均是允许的,而且它们是等价的。例如:
const int a = 1; // ok
int const b = 2; // also ok


我想,使用第一种写法更合乎语言习惯,比较不容易让人迷惑 :O)
为什么会这样?当我发明“const”(最早是被命名为“readonly”且有一个叫“
writeonly”的对应物)时,我让它在前面和后面都行,因为这不会带来二义性。
当时的C/C++编译器对修饰符很少有强加的语序规则。

我不记得当时有过什么关于语序的深思熟虑或相关的争论。一些早期的C++使用者
(特别是我)当时只是单纯地觉得const int c = 10;要比int const c = 10;好看
而已。或许,我是受了这件事实的影响:许多我早年写的例子是用“readonly”修
饰的,而readonly int c = 10;确实看上去要比int readonly c = 10;舒服。而最
早的使用“const”的C/C++代码是我用全局查找替换功能把readonly换成const而
来的。我还记得和几个人讨论过关于语法“变体”问题,包括Dennis Ritchie。不
过我不记得当时我们谈的是哪几种语言了。

另外,请注意:如果指针本身不可被修改,那么const应该放在“*”的后面。例如


int *const p1 = q; // constant pointer to int variable
int const* p2 = q; // pointer to constant int
const int* p3 = q; // pointer to constant int




--
 if (I.amOnBBS) I.OpenMyFTP();
 else { if (BBS.isShutDown) {if (rand()<RAND_MAX*3/4) I.OpenMyFTP();}
        else { if (MyMachine.hasSthWrong) I.SayHehe();
               else I.GoOutDoor();
               You.ExcuseMeFor(I.canDoNothing); }
 }

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


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

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