免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1716 | 回复: 5
打印 上一主题 下一主题

类的声明可以这样用? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-20 09:45 |只看该作者 |倒序浏览
即使不用定义,只要声明,也可以编译通过?

在看EffectiveC++条款34时,有这段话:
尽可能使用类的声明,而不使用类的定义。因为在声明一个函数时,如果用到某个类,是绝对不需要这个类的定义的,即使函数是通过传值来传递和返回这个类

  class Date;                    // 类的声明

  Date returnADate();            // 正确 ---- 不需要Date的定义
  void takeADate(Date d);     

当然,传值通常不是个好主意(见条款22),但出于什么原因不得不这样做时,千万不要还引起不必要的编译依赖性。


上面红色字体部分有没有问题,,不用定义Date,编译可以通过么?
调用takeADate时,参数Date是怎么分配空间出来呢。。
有点奇怪。。

论坛徽章:
0
2 [报告]
发表于 2009-07-20 09:54 |只看该作者
只是声明函数,如果是要调用的话,那肯定需要有类的定义。

论坛徽章:
0
3 [报告]
发表于 2009-07-20 09:59 |只看该作者
我觉得不需要,可能是链接的时候才做检查。。

论坛徽章:
0
4 [报告]
发表于 2009-07-20 22:10 |只看该作者
声明函数当然不需要了。如果是定义函数肯定编译不过。不知道你的类定义,根本没法对你的函数进行编译生成汇编。

论坛徽章:
0
5 [报告]
发表于 2009-07-21 11:21 |只看该作者
在声明的地方用到的所用类型都只是个符号而已,只要这个符号在用到之前出现过,就可以编译通过,但是链接肯定不过的,但是一旦在函数的定义里用到这个类的一些成员的话,就必须要求这个类有定义才行。

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
6 [报告]
发表于 2009-07-21 14:22 |只看该作者
差点晕了
声明无所谓,定义就有关系
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP