您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> 编程语言综合 >> 正文

C++和C不同是因为函数重载

作者:佚名    责任编辑:admin    更新时间:2022-06-22

  在C语言里,一个指针可以指向一个函数。这个指针也有两个属性,但一个是函数的入口地址,另一个是函数的返值类型。例如下面的程序,它在C语言里是正确的:

  int time12(int i)

  { return(i%12);

  }

  int main()

  { int(*fp)()=time12;

  intt=fp(13);

  return0;

  }

  主函数的第一句是一条定义语句。我们应从等号左边的标识符读起,等号左边出现的除了标识符以外都是类型的符号,读的顺序却要按照这个符号作为运算符时的运算级别来读。此句读作:fp是一个指针、它指向函数(注意,C语言允许其参数类型不写出)、这个函数的返值是int、这个指针被初始化为函数time12的入口地址。

  然而,上述程序在C++里,第一条语句却被认为是有错误的。C++是强类型检查语言,这与C++的函数重载机制有关。C++要求必须指出函数的所有形式参数的类型。下列程序才是正确的C++程序:

  int time12(int i)

  { return(i%12);

  }

  int main()

  { int(*fp)(int)=time12;

  intt=fp(13);

  return0;

  }