免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: UnixStudier
打印 上一主题 下一主题

[C++] c++其实很不利于封装  关闭 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-08-20 21:38 |只看该作者

回复 #9 中国加油 的帖子

VC那个预编译宏,还有就是


  1. #ifndef _H_CLASS_A//就这个宏
  2. #define _H_CLASS_A

  3. class A{

  4. }
  5. #endif
复制代码


据说是为了避免头文件重复包含,不过在C下从来没感觉头文件重复包含造成问题阿

论坛徽章:
0
12 [报告]
发表于 2008-08-20 21:41 |只看该作者

回复 #11 reiase 的帖子

C也是需要的啊.

论坛徽章:
0
13 [报告]
发表于 2008-08-20 21:42 |只看该作者

回复 #11 reiase 的帖子

大哥,你以为C没有这种宏吗?麻烦你随便看看C标准库中的头文件,比如stdio.h之类的.



你连这个宏是做什么的,原理是什么都不清楚.,自己对C,C++缺乏认识,就出来批评.

论坛徽章:
0
14 [报告]
发表于 2008-08-20 21:45 |只看该作者

回复 #11 reiase 的帖子

那是因为你的工程不够大
你想想几百个头文件,几百号人一起开发的情况……

论坛徽章:
0
15 [报告]
发表于 2008-08-20 21:50 |只看该作者
C++ 很强大,就是用不好容易伤着自个~~

论坛徽章:
0
16 [报告]
发表于 2008-08-20 21:52 |只看该作者
原帖由 reiase 于 2008-8-20 20:10 发表
我一直郁闷C++的源代码到底怎么组织
C里边只要.h里放声明,.c里放定义,程序就不会出现问题

C++那个头文件宏(#ifndef ...)很是难看阿,为啥C++语言不提供解决措施,偏要拿一个宏hack了解决呢

论坛徽章:
0
17 [报告]
发表于 2008-08-20 21:53 |只看该作者
原帖由 Roemer 于 2008-8-20 21:50 发表
C++ 很强大,就是用不好容易伤着自个~~

同意
C++就是为了能够更好地解决问题的, 它兼容C就是这个目的.

论坛徽章:
0
18 [报告]
发表于 2008-08-20 22:14 |只看该作者
原帖由 converse 于 2008-8-20 21:42 发表
大哥,你以为C没有这种宏吗?麻烦你随便看看C标准库中的头文件,比如stdio.h之类的.



你连这个宏是做什么的,原理是什么都不清楚.,自己对C,C++缺乏认识,就出来批评.

原理知道,只是自己从来没用上过头文件宏。我只是觉得组织比较好的C源代码,一般不用头文件宏来避免链接时期的名字冲突

而C++可能是因为在头文件类的声明处就为类生成了相关的函数(构造,析构),造成C++头文件包含的后果比C严重很多,(事态从重复声明上升为重复定义),所以C++非常依赖头文件宏。

汗,被版主骂过才从直觉发展出点分析来

论坛徽章:
0
19 [报告]
发表于 2008-08-20 22:20 |只看该作者
大多数语言都是折中。比如:面向对象和性能之间要取得平衡。

要说封装,即使纯C也可以写出很好的封装的。Linux内核还有GNOME就是很好的例子。

有种非常面向对象的语言,好像叫SmallTalk的吧,封装的一级棒,可以作为面向对象的教科书语言。可是太偏重一个方面,因此这个语言已经基本上消失了。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
20 [报告]
发表于 2008-08-20 22:22 |只看该作者
原帖由 reiase 于 2008-8-20 21:38 发表
VC那个预编译宏,还有就是


#ifndef _H_CLASS_A//就这个宏
#define _H_CLASS_A

class A{

}
#endif


据说是为了避免头文件重复包含,不过在C下从来没感觉头文件重复包含造成问题阿

谁告诉你的?

  1. /*a.h*/
  2. struct A {
  3.     int a;
  4. };
  5. /*b.h*/
  6. #include "a.h"
  7. /*a.c*/
  8. #include "a.h"
  9. #include "b.h"
  10. struct A a'
  11. int main(){return 0;}
复制代码

以上为C语言,你编译一下看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP