学习c++编译器如何使用-首选专业的智盟中心

最新动态

特大喜讯:智盟培训将于2011年11月 份隆重推出已上线商用项目案例实训课程,课堂案例选用一家中型门户网站作为实训的授课内容。授课老师是该网站项目的技术负责人。网站采用微软Windows Server 2008+ASP.NET4.0平台,开发语言采用C#语言。此网站项目架构设计优秀、技术先进。敬请喜欢的朋友时刻关注本站最新公告!咨询电话:010-52850976

最新开班

  • ASP.NET培训-高级开发班:团报3500元
  • 北京-----11月 10号 已开班
  • 北京-----11月 18号 已开班
  • JAVA培训-高级开发班:团报2800元
  • 北京-----11月 10号 已开班
  • 北京-----11月 12号 已开班
  • 北京-----11月 14号 名额仅限10名
  • 数据库培训-高级开发班:团报3500元
  • 北京-----11月 10号 已开班
  • 北京-----11月 18号 已开班
  • C++培训-高级开发班:团报4400元
  • 北京-----11月 10号 已开班
  • 北京-----11月 12号 已开班
  • 北京-----11月 14号 名额仅限10名

在线答疑

更多>>
姓名
手机
点击我报名

咨询热线

最专业的最权威的最具性价比的c++培训机构是北京智盟it培训中心
当前位置:IT培训 >> C++培训专题 >> C++培训

揭秘:C++编译器的函数编译流程

分类:c++培训专题|来源:CSDN|发布时间:2011-4-11 8:41:17

C++中的类型查找过程相对简单,基本上就是名字查找,这里不再介绍。对于 .cpp 文件中调用的一个函数 ( 或成员函数 ), 编译器主要做了下面三件事情 :


1 、名字查找 。


先在所在编译单元中可见名字实体中进行名字查找 。


(1) 类成员函数优先 ( 对象所在的类 -》 基类 )。 一经找到就停止查找 。


(2 )如果没有 ,在相应的名字空间中做进一步的搜索 ; (3) 如果还没有 , 会根据函数参数所在的名字空间中查找 (keoning 查找 )。


2 、重载决议 。 根据所找到的名字进行重载决议 , 根据参数最匹配原则选择相应的函数 。


3、可访问性检查 。 用以确定被选中的函数是否可被调用 。


说明 :


1) 根据第一条 , 显然 , 如果类型想和非成员函数一起工作 , 那么它们应该放在同一个名字空间中 。 比如 , 一般类型的重载运算符和参数类型放在同一个头文件中/或者同一个名字空间下 。


2) 函数特化模板不参与重载决议 , 因此 , 如果想运用某个函数的特化 , 最好的方法是重载该函数 , 在实现中采用该特化来工作 。


3) 重载决议发生在可访问性检查之前 。 因此 , 如果私有函数不幸参与了重载 , 并且被选中 , 最终也会出现无法访问的编译提示 。 这常常隐含二义性 , 这样的设计本身也不合理 。 换句话说 , 私有参数 , 在名字查找和重载时并非是 " 私有的 "。


以 c.Twice( 21 )的函数调用为例:


a) 名字查找:编译器会首先寻找一个至少包含一个名字为 Twice 的实体作用域(类,文件,或者名字空间),并将候选函数放入候选实体列表。例子中,编译器首先从对象 c 所在类实体中进行查找,找到就停止;如果没找到就会依次在其基类和外围的名字空间中查找,直到找到一个至少含有一个候选函数的作用域。两点需要注意: 1) 只要找到一个实体就停止查找,所以并非所有的同名函数都会被考虑; 2) 参数所在名字空间也属于查找范围(keoning 准则) 。


b) 重载决议:从所找到的候选重载函数列表中选出唯一最佳匹配 。如不唯一,就存在二义性。注意: 1) 这是基于名字查找结果的; 2) 特化的模板函数不参与重载。


c) 可访问性检查:确定所选出的函数是否可访问。这是最后一步,晚于重载决议。


文章中的规则非常重要,理解后,很多C++的编译问题就自然解决了。后面将会有进一步的文章来介绍:如何确定C++每个编译单元(CPP文件)中的可见名字(与名字查找相关);Keoning查找详解; 重载 (Overload) 和虚函数的重实现 (override).

本文来自智盟无忧net培训网(http://www.netpeixun.com),转摘请注明出处

本文标题:C++培训  TAG标签:WINDOWS培训 UNIX系统培训 LINUX系统培训

想成为c++高手吗-赶紧参加智盟c++培训吧

版权声明:此网站相关信息如有侵犯您的版权,请及时通知我们,我们将及时加上您的版权信息或删除其内容,并向您致以诚挚的歉意。
报名咨询地址: 北京丰台区刘家窑桥东大陆写字楼A203室(每天早晨9:00到晚上18:00全天提供咨询和报名服务,周末照常服务)
IT培训/计算机培训/电脑培训/计算机上门培训 地址: 北京丰台区刘家窑桥东大陆写字楼A203室 邮政编码:100079
电脑培训/IT培训团体/企业培训联系电话:15101019808   010-52850976
MSN:zhimeng@live.cn QQ:120181366 || 客服邮箱:120181366@qq.com
Copyright(c) 2010 智盟科技 法律顾问:徐涛律师
京ICP备10025228号

特色培训:c++培训linux培训vc++培训mfc培训vc++.net培训windows sdk培训vc界面培训