您的位置:首页 > 编程语言 > C语言/C++

C++、java、C#命名空间比较

2012-01-10 04:33 513 查看
今天上网搜索c++的命名空间,是想看c++的命名空间是不是开放的,我随时可以往其中添加内容,无意中搜索到了一片比较c++、java、c#命名空间的文章,后来发现还被很多人转载了,在这里,我表示压力很大,因为那一篇文章纯粹乱忽悠,却能被很多人转载,所以深切感觉到网上有技术含量的技术博客太少了,大多都是复制粘贴充门面,对于他们对博客业发现的贡献,我表示膜拜,但对于他们对技术的亵渎,我表示鄙视一下。
贴出他们的论点,仅贴出来而已,不讨论了,只是作为证明我上面第一段的话是有根据的,至于他们观点的荒唐之处,就不说了,因为编程的应该都能看懂,所以我给原文作者留言是:大哥,你不是编程的吧。
支持泛型
引用简洁
主体简洁
优劣比较
c++
+1
+1
-1
9
java
-1
+1
-1
8
c#
-1
-1
+1
8
博客地址:http://blog.csdn.net/zade/article/details/610675
下面我来说我自己对这东西的比较:
出现命名空间的出发点:
c++为了解决重名冲突。决定了他不支持访问权限控制
c#为了更好的封装,有internal关键字与其对应
java同一个package下面,protected修饰的元素可被同package下的别的class访问。friendly,也就是默认default,说通俗点就是类成员之前不写访问修饰符,此时同protected,可以被同包下面的别的类访问。
命名空间是否是开放的,即我在一个地方定义了一个命名空间,后来我在别的地方发现我想往其中增加内容,是否可以随时随地增加。
c++ 是的,你在一个a.h中定义了namespace mm{},此时在b.h中同样可以namespace mm{},编译器自己会负责将其合并到一起。
c# 这个就不用说了,绝对可以
java不可以,java的包是对应物理文件的,此时显得那么像c++的.h文件。
命名空间是否是抽象的,雷同第二点。第二点搞清楚了也就知道这个结果了。
是否参与代码结构组织:
c++ 无,c++的编译是首先编译cpp,根据include去引入.h,其中c++的结构其实就是.h是怎么组织的。命名空间仅仅为了解决重名,暂时没发现没别的用处
java 参与了,java的命名空间也就是package可是和物理文件直接挂钩的,又怎么可能不参与组织结构呢
c# 参与了,不过不是明目张胆的参与,而是抽象层面参与。物理文件怎么放,对于c#程序员来说基本没概念,所以c#程序员可以根据爱好,建立一大堆文件夹,然后分门别类放代码文件,java的程序员就不敢。因为c#是加载进来之后,由clr级别的东西在干那些程序集组织的事情。
也就这么多了,至于上面个表格,就当空气吧,我不知道import io.*的语法比 using namespace std;和using system.draw;之类的复杂多少。也不清楚 package mm;比namespace mm{}这个简洁多少。对于程序员来说,会觉得这个简洁复杂也是问题的话,我觉得可以不用编程了,那多烦啊,岂不复杂死了。
我也不知道我其中有没有说错或者说漏了的地方,希望大家补充和纠正。

======================================================

在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定
这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: