虽然 C++是C的超集,但是二者之间并不是简单地包含与被包含的关系,还是有一些不同之处的。
在C语言中,利用类似printf()与scanf()之类的I/O函数进行输入输出的,但C++提供了一种新的,更好的方法,用来执行这类I/O操作。在C++中,输入输出是通过I/O算子,而不是I/O函数来执行。输出操作是<<,输入操作是>>。正如你所知道的,在C语言中,“<<”、“>>”分别表示左移与右移操作。在C++中,他们不仅保留了他们的原始功能(左移与右移),而且添加了输入输出的任务。
在C 里面是默认返回int, 而C++ 比较严谨,标准C++的main需要返回值,所以main的前面必须有类型标识符,这也是C与C++一个明显的区别。
函数的原型化:
在C中,虽然推荐使用原型,但从技术角度看却是可选的,然而在C++中原型却是必需的。在C++程序中,所有函数都必须是原型化的。
那么什么是函数原型化?
就是你在定义函数时,函数的返回值、函数名、和函数的参数。例如:你定义下面一个函数:
int max (int x,int y)
{
if (x>y)
return x;
else
return y;
}
这个max函数的函数原型就是int max (int x,int y) ;
如果一个函数在调用max函数时,当max函数的定义在这个函数的后面,那么就必须在这个函数的前面加上max函数的原型,目的是:通知编译器存在max这个函数。如果max函数在调用它的函数的前面定义,就不用加上max的原型声明了。
下面说说函数的重载
C++函数声明规定只能为原型形式,真实目的是为了函数重载。
我们说C++语言在技术上全面地兼容了C语言,并不意味着C++对C语言所有的非技术的东西都兼容。例如,对于函数声明的非原型形式,C++语言将不再支持,其原因是函数的重载必须有函数原型声明形式的支持。
C++只使用原型形式来进行函数声明的另一个重要原因是要进行严格的类型检查,这样能够在编译阶段发现更多的问题,例如形参与实参在数据类型上的匹配和兼容问题。
下面是一个函数重载的例子:
# include <iostream>
using namespace std;
void output( int x); // 函数声明
void output( float x); // 函数声明
void output( int x)
{
cout << " output int " << x << endl ;
}
void output( float x)
{
cout << " output float " << x << endl ;
} //函数的重载
int main()
{
output(1);
output(float(0.5));
}
另外在C++中,只要函数的变元类型或者函数参数的数量不同,或者二者兼备,都可以利用函数的重载。