本文主要是整理一些C++与C的一些小的区别,也就是在使用C与C++时候需要注意的一些问题,C++是以C语言为基础的,并且完全兼容C语言的特性
注释
C语言的注释形式为
/*
注释内容
*/
而C++提供了另一种新的注释方式
//注释内容
但在C的发展过程中,慢慢接受了C++的注释方式,在C语言中也可以采用C++的注释方式了
变量的声明及初始化
在C语言中,局部变量的声明和初始化是分开的
int i;
for(i = 0; i < 10; i++);
而在C++中,声明和初始化可以放在一块儿
for(int i = 0; i < 10; i++);
这种规则,在C后来的编译器中也被允许了,但在C89及以前的C标准编译器是会报错的
函数原型的增强
在C语言中,对于函数原型的简化是很随意的,而C++做了强制的函数类型和返回参数说明
例如
int func(char, double);
以上函数声明在C语言中写作func();
是合法的,这就造成了理解上的困难
增加了函数重载机制
这在C语言里面是没有的
C++可以通过重载,增加新的定义
增加缺省参数
C++允许函数有缺省参数
int func(int a, int b = 1)
{
return a*b;
}
此时,调用函数func(3,1)
和func(3)
,其得到的结果是相同的
动态存储的改变
C++提供了动态内存分配和释放的操作符new
和delete
,用来增强C语言中的malloc()
和free()
。
增加了内联函数
C++的内内联函数用以代替C语言中的宏,实现了函数调用的参数检查
输入/输出流机制
C++保留了C语言标准库中的各种输入输出函数,增加了新的输入输出机制-流机制
cout << "test";
int a;
cin >> a;
这种输入输出运算符可以根据变量类型自动确定数据交换过程中的转换方式
作用域限定运算符::
作用域限定运算符::
用于对当前作用域之外的同名变量进行访问。
#include <iostream>
int a;
void main()
{
float a;
a = 3.14;
::a = 6;
cout << "local variable a = "<< a << endl;
cout << "global variable a = " << ::a << endl;
}
增强结构体
在C++中,结构体可以带有函数
而在C语言中,这样做是不允许的
声明结构体变量,在C语言里面是这样的
struct man m1;
而在C++中可以省略struct
man m1;