24小时热门版块排行榜    

查看: 2020  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 0856求调剂285 +5 吕仔龙 2026-02-28 5/250 2026-03-01 09:18 by L135790
[考研] 材料调剂 +4 爱擦汗的可乐冰 2026-02-28 4/200 2026-03-01 00:38 by 猫猫球alter
[基金申请] 面上模板改不了页边距吧? +5 ieewxg 2026-02-25 6/300 2026-03-01 00:10 by addressing
[考研] 304求调剂 +3 52hz~~ 2026-02-28 5/250 2026-03-01 00:00 by 52hz~~
[考研] 化工专硕348,一志愿985求调剂 +4 弗格个 2026-02-28 6/300 2026-02-28 22:00 by wang_dand
[考研] 295求调剂 +5 19171856320 2026-02-28 5/250 2026-02-28 21:39 by gaoxiaoniuma
[考博] 26申博 +4 想申博! 2026-02-26 4/200 2026-02-28 21:37 by limorning
[考研] 材料学调剂 +5 提神豆沙包 2026-02-28 5/250 2026-02-28 21:34 by gaoxiaoniuma
[考研] 311求调剂 +8 南迦720 2026-02-28 8/400 2026-02-28 21:30 by gaoxiaoniuma
[考研] 求调剂 +4 repeatt?t 2026-02-28 4/200 2026-02-28 21:16 by gaoxiaoniuma
[考研] 085600材料工程一志愿中科大总分312求调剂 +8 吃宵夜1 2026-02-28 10/500 2026-02-28 20:27 by L135790
[考研] 298求调剂 +8 人间唯你是清欢 2026-02-28 11/550 2026-02-28 20:26 by L135790
[考研] 0856材料求调剂 +10 hyf hyf hyf 2026-02-28 11/550 2026-02-28 18:50 by 无际的草原
[考博] 博士自荐 +3 kkluvs 2026-02-28 3/150 2026-02-28 16:59 by StarAura
[考研] 265分求调剂不调专业和学校有行学上就 +4 礼堂丁真258 2026-02-28 6/300 2026-02-28 16:18 by 求调剂zz
[考研] 0856调剂 +3 刘梦微 2026-02-28 3/150 2026-02-28 13:22 by houyaoxu
[考研] 寻找调剂 +3 LYidhsjabdj 2026-02-28 3/150 2026-02-28 12:59 by miniwendy
[考研] 304求调剂 +5 曼殊2266 2026-02-28 6/300 2026-02-28 12:44 by 迷糊CCPs
[硕博家园] 博士自荐 +6 科研狗111 2026-02-26 9/450 2026-02-28 12:32 by seaskyy
[基金申请] 面上可以超过30页吧? +12 阿拉贡aragon 2026-02-22 13/650 2026-02-26 22:09 by Hahaxia
信息提示
请填处理意见