24小时热门版块排行榜    

查看: 2252  |  回复: 4

tiandui

新虫 (初入文坛)

[求助] “类”的前置声明与“函数”的前置声明区别在哪里

如题,本人初学,我知道“类”的前置声明是有局限的,“函数”的前置声明则不同

于是有些疑惑,这二者机制差别在哪里

为什么类不能像函数一样,前置声明,然后任意使用

标准设计成这样一定有其道理,那是什么原因呢。

请教各路英雄,谢谢大家。

[ Last edited by tiandui on 2012-2-26 at 17:23 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
jjdg(金币+1): 感谢参与 2012-02-27 00:18:43
函数和类的前置声明,是一样的,也是不一样的,是统一的,也是对立的,哈哈。唧歪过后:

函数(类)的前置声明都是告诉编译器有那么一个函数名(类名)。

区别在于,声明函数的时候,附带着这个函数的参数列表;而声明类时,编译器只知道类的名字,不知里面的成员变量和成员函数。


1.不需要调用类的实现时,可以仅仅使用类的前置声明就可以。
2.当要用到类的具体内容时,就要类的定义。

为什么如此设计,应该是为了简洁吧。估计C++它爸不想在声明时使用一长串的代码来描写类的五脏六腑。。。

参见: C++它爸的《The C++ Programming Language》

[ 发自手机版 http://muchong.com/3g ]
很女子很弓虽大
2楼2012-02-26 21:20:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tiandui

新虫 (初入文坛)

引用回帖:
: Originally posted by lurencyj at 2012-02-26 21:20:12:
函数和类的前置声明,是一样的,也是不一样的,是统一的,也是对立的,哈哈。唧歪过后:

函数(类)的前置声明都是告诉编译器有那么一个函数名(类名)。

区别在于,声明函数的时候,附带着这个函数的参数列表; ...

呃,说是这么个说
哦,我明白了,是因为编译时碰到函数,只要知道参数表和返回值,编译就能判断是否匹配了,可以排除匹配错误
但是如果只知道类的声明,编译时是不能判断是否合理的,好些过程没法执行

我开始弄混了执行和编译器检查这两个过程。

执行的时候才会进出函数,编译时不用,所以编译时不存在顺序问题
而编译时会进出类,所以这时候必须知道类的细节?(编译这词被我胡乱用了)

那再请问,这是不是强调编译是严格按代码“顺序”执行的?
3楼2012-02-26 22:17:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

jjdg(金币+1): 感谢参与 2012-02-27 00:18:54
tiandui(金币+3): 有帮助 2012-02-28 21:31:11
其实你不用管编译的过程,编译过程大致包括代码的语法分析,建立抽象语法树,建立symbol table(中文可能叫符号表,不清楚,哈哈),然后是汇编代码,再机器码。过程中要读取分析几次源代码,所以无所谓顺序不顺序。

在应用层面上,楼主只要关心程序的运行时过程就好了。你可以使用一下debug工具,让程序一步一步执行看看。
很女子很弓虽大
4楼2012-02-26 22:25:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tiandui

新虫 (初入文坛)

引用回帖:
: Originally posted by lurencyj at 2012-02-26 22:25:50:
其实你不用管编译的过程,编译过程大致包括代码的语法分析,建立抽象语法树,建立symbol table(中文可能叫符号表,不清楚,哈哈),然后是汇编代码,再机器码。过程中要读取分析几次源代码,所以无所谓顺序不顺序 ...

嗯,谢谢楼上,勉强调试了下,单步执行
发现“进入”到类时,总是进入到类的函数,从这个意义上看,感觉类相当于一组函数,对单个函数,前置声明就行了,对一组函数,仅仅声明类是不够的
5楼2012-02-27 09:05:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 tiandui 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 我面上完蛋了 +9 且听虎啸 2026-08-20 10/500 2026-08-24 20:08 by 苦寒来香
[基金申请] 人气不行了 +9 fansofjerry 2026-08-21 9/450 2026-08-24 17:48 by zhaozhengxin
[基金申请] 没有任何消息-是不是就凉了 +6 图啦图啦 2026-08-24 6/300 2026-08-24 17:44 by 小小红帆
[基金申请] 如果此刻你正在为国基感到焦虑,不妨来听听这首《基金之外》 +5 scalable 2026-08-24 5/250 2026-08-24 17:03 by spiderzhuzhi
[基金申请] 建议基金发布提前给出明确的时间点 +13 kulium 2026-08-21 16/800 2026-08-24 16:27 by superceng
[基金申请] 今日不放榜?网传国自然预计 8 月 27 日可查结果 +17 医学老男孩 2026-08-20 21/1050 2026-08-24 14:21 by refreshing11
[基金申请] 估计是周四 +4 archvillain 2026-08-18 4/200 2026-08-24 13:53 by zzuzxg
[基金申请] 范进中举一文的中心思想 +6 炎黄贵胄 2026-08-22 7/350 2026-08-24 11:58 by 6543yes
[基金申请] 朋友圈看到的 +7 wangzilk 2026-08-18 9/450 2026-08-24 10:50 by cmrandy
[基金申请] 让我中一个面上吧! +13 大萍1987 2026-08-20 16/800 2026-08-24 10:23 by 太傻了
[基金申请] 放榜前的不淡定 20+4 snowwithsea 2026-08-19 17/850 2026-08-24 10:20 by echo8914667
[基金申请] 明天应该可查了!? +4 chengyan1220 2026-08-23 4/200 2026-08-24 08:47 by gloomy6159
[基金申请] 什么时候开奖? +10 CrisMessi 2026-08-18 11/550 2026-08-24 06:50 by 开心的小狮子
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[基金申请] 只有每年这种时候来逛逛小木虫 +24 yaoyewhu2008 2026-08-20 26/1300 2026-08-22 17:43 by kammury
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[基金申请] 今天放榜没戏了吧 +9 yuleib84 2026-08-19 11/550 2026-08-21 10:06 by gltch
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
信息提示
请填处理意见