您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C十十 >> 辅导 >> 正文    
  初学者编程入门:C++学习实用技巧讲解 【注册男护士专用博客】          

初学者编程入门:C++学习实用技巧讲解

www.nanhushi.com     佚名   不详 

  在准标准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命名的缺省变量值。即使你的编译器接受了它们,在更高版本中它也可能不被接受。而且,这些代码也会降低程序的灵巧性,也会给那些无法判别哪些编译器接收何种缺省变量的开发人员带来误导。在使用这些缺省变量值的合法代码中,这里的建议是添加一些必要的注释,以说明需要哪些缺省变量值。

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目