中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > C/C++
初学者编程入门:C++实用技巧讲解
作者:佚名 时间:2006-10-04 12:16 出处:C++学习资源网 责编:月夜寒箫
              摘要:初学者编程入门:C++实用技巧讲解
在准标准C++中,有关缺省变量值的限制非常模糊。基于此,很多编译器允许开发人员将缺省变量值包含在函数声明,指向函数的指针和引用,成员函数的指针,以及typedef声明中。

请看一下以下的程序:






struct A
            {
            void func(int x=5)
            {
            }
            };
            void g(int n=12)
            {
            }
            // 根据C++标准,不能在以下声明中使用缺省变量值。
            void (*pf)(inti=120);
            void (A::*pmf)(int j=50);
            typedef void (*PF)(inti=100);
            // 函数的引用
            typedef void (&PRF)(inti=100);
            int main()
            {
            pf=g;
            PF pf2=g;
            pmf=&A::func;
            A a;
            //这些调用使用了哪些缺省值?
            pf();
            pf2();
            (a.*pmf)();
            }

A::func()和g()具有缺省变量值,这是合理的。然而,指针pmf,pf以及typedefPF也定义了缺省的变量值。根据C++标准,这是不规范的。

这一代码的实际使用中,其中的一个问题是这些声明中提供的缺省值与A::func()和g()函数提供的值不一致。也就是说,很多编译器将这些代码作为非标准的扩展。当调用g()函数时,我的编译将120作为pf的缺省值;然而,对于pf2,它使用100作为它的缺省值。

作为一种规则,应该避免使用指向函数的指针,成员函数的指针,以及typedef命名的缺省变量值。即使你的编译器接受了它们,在更高版本中它也可能不被接受。而且,这些代码也会降低程序的灵巧性,也会给那些无法判别哪些编译器接收何种缺省变量的开发人员带来误导。在使用这些缺省变量值的合法代码中,这里的建议是添加一些必要的注释,以说明需要哪些缺省变量值。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有