24小时热门版块排行榜    

Znn3bq.jpeg
查看: 2057  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 求调剂 +8 璃茉一定上岸 2026-04-10 8/400 2026-04-11 09:38 by zhq0425
[考研] 0854调剂 +4 长弓傲 2026-04-09 4/200 2026-04-11 09:18 by 猪会飞
[考研] 295求调剂 +5 ?要上岸? 2026-04-05 6/300 2026-04-11 08:27 by zhq0425
[考研] 一志愿211,化学学硕,310分,本科重点双非,求调剂 +17 努力奋斗112 2026-04-06 20/1000 2026-04-11 00:31 by wangjihu
[考研] 还有化工二轮调剂的学校吗 5+13 化工人999 2026-04-09 47/2350 2026-04-11 00:20 by 骑牛渡寒江
[考研] 化学工程与技术324调剂 +23 孙常华 2026-04-09 25/1250 2026-04-11 00:07 by 骑牛渡寒江
[考研] 本9 一志愿西工大085601 324求调剂 +5 wysyjs25 2026-04-10 5/250 2026-04-10 16:57 by luoyongfeng
[考研] 085800 能源动力求调剂 +6 阿biu啊啊啊啊啊 2026-04-10 6/300 2026-04-10 15:03 by hemengdong
[考研] 化学工程调剂289 +42 yang婷 2026-04-07 48/2400 2026-04-10 09:34 by 690616278
[考研] 288求调剂,一志愿华南理工大学071005 +16 ioodiiij 2026-04-08 16/800 2026-04-09 23:08 by wolf97
[考研] 332,085601求调剂 +12 ydfyh 2026-04-09 14/700 2026-04-09 17:28 by wp06
[考研] 材料专硕322 +14 哈哈哈吼吼吼哈 2026-04-05 14/700 2026-04-09 13:25 by 5268321
[考研] 招收有机化学、化工,药学,食品灯专业学生 +3 yrfhjgdj 2026-04-08 3/150 2026-04-09 10:15 by QYQX_123
[考研] 304求调剂 +16 c297914 2026-04-05 17/850 2026-04-08 13:00 by grayjzr
[考研] 0854电子信息319求调剂(接受跨专业调剂) +5 星星不眨眼喽 2026-04-05 6/300 2026-04-07 22:16 by hemengdong
[考研] 081200-11408-367学硕求调剂 +4 1_2_3111 2026-04-06 4/200 2026-04-07 08:13 by jp9609
[考研] 第一志愿东南大学物理313,有科研竞赛获奖经历,希望物理复试调剂 +3 马内橙 2026-04-05 3/150 2026-04-06 10:32 by 蓝云思雨
[考研] 求调剂 +10 Hll胡 2026-04-04 10/500 2026-04-05 20:09 by nepu_uu
[考研] 295求调剂 +4 A你好研究生 2026-04-04 5/250 2026-04-04 22:46 by yu221
[考研] 调剂 +4 是可乐不是可乐 2026-04-04 4/200 2026-04-04 19:41 by 唐沐儿
信息提示
请填处理意见