24小时热门版块排行榜    

查看: 2029  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 求调剂 +5 十三加油 2026-03-21 5/250 2026-03-21 18:48 by 学员8dgXkO
[考研] 307求调剂 +3 余意卿 2026-03-18 3/150 2026-03-21 17:31 by ColorlessPI
[考研] 303求调剂 +5 睿08 2026-03-17 7/350 2026-03-21 03:11 by JourneyLucky
[考研] 085700资源与环境308求调剂 +12 墨墨漠 2026-03-18 13/650 2026-03-21 01:42 by JourneyLucky
[考研] 271材料工程求调剂 +8 .6lL 2026-03-18 8/400 2026-03-21 00:58 by JourneyLucky
[考研] 一志愿西南交大,求调剂 +5 材化逐梦人 2026-03-18 5/250 2026-03-21 00:26 by JourneyLucky
[考研] 308求调剂 +3 阿姐阿姐家啊 2026-03-18 3/150 2026-03-20 23:24 by JourneyLucky
[考研] 材料与化工 322求调剂 +4 然11 2026-03-19 4/200 2026-03-20 22:12 by luoyongfeng
[考研] 一志愿苏州大学材料求调剂,总分315(英一) +5 sbdksD 2026-03-19 5/250 2026-03-20 22:10 by luoyongfeng
[考研] 一志愿西安交通大学 学硕 354求调剂211或者双一流 +3 我想要读研究生 2026-03-20 3/150 2026-03-20 20:13 by JourneyLucky
[考研] 工科材料085601 279求调剂 +7 困于星晨 2026-03-17 9/450 2026-03-20 17:38 by 无懈可击111
[考研] 085600材料与化工调剂 324分 +10 llllkkkhh 2026-03-18 12/600 2026-03-19 14:33 by llllkkkhh
[考研] 一志愿福大288有机化学,求调剂 +3 小木虫200408204 2026-03-18 3/150 2026-03-19 13:31 by houyaoxu
[考研] 材料工程专硕调剂 +5 204818@lcx 2026-03-17 6/300 2026-03-18 22:55 by 204818@lcx
[考研] 344求调剂 +6 knight344 2026-03-16 7/350 2026-03-18 20:13 by walc
[考研] 0854可跨调剂,一作一项核心论文五项专利,省、国级证书40+数一英一287 +8 小李0854 2026-03-16 8/400 2026-03-18 14:35 by 搏击518
[考研] [导师推荐]西南科技大学国防/材料导师推荐 +3 尖角小荷 2026-03-16 6/300 2026-03-16 23:21 by 尖角小荷
[考研] 318求调剂 +3 Yanyali 2026-03-15 3/150 2026-03-16 16:41 by houyaoxu
[考研] 070300化学学硕求调剂 +6 太想进步了0608 2026-03-16 6/300 2026-03-16 16:13 by kykm678
[考研] 085601材料工程315分求调剂 +3 yang_0104 2026-03-15 3/150 2026-03-15 10:58 by peike
信息提示
请填处理意见