1.注释行
在C语言中,我们用“/*……*/”进行注释,如/*This is a test*/
在C++中,保留了这种注释方式,但是C++中新加入了一种更有效的注释方式,该注释以“//”开头,直到行尾。“//”用在单行注释特别合适。如:
x=y+z; // This is a comment
2.新的I/O流
在C中如果用下面的输入方式就会出错,C编译器检查不出这种错误。如scanf(“%f”,i)。
C++采用了更方便更安全的I/O方式,即用”cin>>”进行输入,用”cout<<”进行输出。
例如:
int I;
cin>>i;
cout<<I;
这种方式可以连续进行输入输出,例如:
cin>>I>>j>>k;
cout<<I<<j<<k;
还可以输出表达式如:
cout<<a+b+c;
3.灵活的变量说明
C++可以在代码中的任何地方说明局部变量,它所说明的变量从其说明点到该变量所在的最小分程序末的范围内有效。
4 Const 修饰符
在C中用#define来定义常量,如:#define LIMIT 100;
C++用一种更灵活安全的方法来定义常量,即用const修饰符来定义常量,如:
const int LIMIT=100;
const可以与指针一起使用,他们的组合可归纳为三种:
(1)指向常量的指针
指向常量的指针是一个指向常量的指针变量如: const char *name=”chen”;
含义为:声明一个名为name的指针变量,他指向一个字符型常量,初始化为“chen”,从名字可以看出指针指的 是一个常量,所以不能改变常量的值,如:name[3]=’a’; 是错误的。但是只要指针指向的是常量就行,即:可以把指针指向别的常量,如:name=”zhang ”。
(2)常指针
常指针是把指针声明为常量,如:char *const name=”chen”;
含义是:声明一个名为name的指针,该指针是指向字符型数据的常指针,用“chen”初始化。
常指针不能移动,但可以改变它所指的数据,如:
name[3]=’a’; //合法,
name=”zhang ”; //非法
(3)指向常量的常指针
声明为:const char *const name=”chen”;
它是(!)(2)的综合,如:
name[3]=’a’; //非法
nane=”zhang” //非法
5. 内置函数
在函数说明之前,冠以关键之inline,改函数就被说明为内置函数。当程序中出现对该函数的调用时,C++编译器使用函数体中的代码替代函数调用表达式,这样能加快代码的执行,减小调用开销;消除#vdefine 的不安全因素。如:
#include<iostream.h>
inline float circle(floar r)
{return 3.1416*r*r;}
int main()
{
for(int I=1;I<=3;I++)
cout<<I<<circle(i)<<endl;
return 0;}
运行结果为:
1 3.1416
2 12.5664
3 28.4401
6. 带缺省参数的函数
C++在说明函数原型时,可为一个或多个参数指定缺省参数值,调用时,若省略其中某一参数,会自动地以却僧参数作为相应地参数值。如:
int special(int x=5,float=3);
以下调用参数为:
special(100,34.4); //x=100,y=34.4
special(25); //x=25,y=3
special(); //x=100,y=3
7.new和delete
C语言用函数malloc()和free()动态地分配内存和释放内存。C++用new和delete更好地分配和释放内存。
使用方法为:p=new type; delete p;
其中type是一数据类型名,如int;new 分配一块大小为sizeof(type)字节地内存,首地址存于指针p中。delete释放内存。
New和delete的优点:
(1) new可以自动计算所要分配地内存大小。
(2) new能自动返回正确地指针类型,不必进行类型转换。
(3) 可以用new将分配地对象初始化。
(4) new和delete可以被重载。
8.引用的使用
在C中用指针传递参数地址,但是,指针的使用非常复杂,容易出错。C++采用了引用的概念,它是一种间接的指针。引用可为变量起别名,主要用于参数传递和做函数的返回类型。
1.引用的定义
引用定义的关键字是“type &”,含义是定义一个type类的引用,此引用可与type类对象或变量的地址相联系。如:
int I=5;
int &j=I;
含义是:创建一个整型引用,j是I的别名,它们公用一个内存地址。
说明:
(1) double & rr=1; 等价与 double temp; temp=double(1); double & rr=temp;
(2) int *a; int * & p=a; int b=8; p=&b; //正确,指针变量的引用
void & a=3; //不正确,没有变量或对象的类型是void
int & ri=NULL; //不正确,有空指针,无空引用
(3) int & ra=int; //不正确,不能用类型来初始化
int *p=new int; int & r=*p; //正确
(4) 引用不同于一般变量,下面类型声明是非法的:
int &b[3]; //不能建立引用数组
int & *p; //不能建立指向引用的指针
int &&r; //不能建立引用的引用
(5) 当使用&运算符取一个引用的地址时,其值为所引用变量的地址,
2.引用参数
引用的一个重要应用就是作为函数的参数。在使用引用做参数时不必使用*,并且又没有地址与变量本身的差别,从而简化了程序,
3. 引用和指针使用原则
1.在可以用引用的情况下,不要用指针;
2.引用不允许重新赋值.,当使用一个变量指向不同的对象时,必须用指针;
3.引用不允许为空,当存在对象为空时,必须使用指针。