C++对C的扩充

来源:互联网 发布:铃声剪辑软件 编辑:程序博客网 时间:2024/05/22 07:43

1、C++预定义的标准流

(1)cin—标准输入—隐含设备:键盘

(2)cout—标准输出—隐含设备:屏幕

(3)Cerr—标准出错输出—隐含设备:屏幕

(4)Clog—cerr的缓冲形式—隐含设备:屏幕

2、C++允许将变量的声明放在程序的任何位置(但必须在使用该变量之前)。

如:

#include<iostream>

using namespace std;

int main()

{

cout<<"Please enter two numbers:"<<endl;

int a,b;

cin>>a>>b;

cout<<a<<b<<endl;

return 0;

}

3、C中常用define定义符号常量,定义的常量没有类型,不占据存储单元;C++中用const定义常变量,定义的常量具有变量的属性,有数据类型,占据存储单元,有地址,可用指针指向它,只是程序运行期间此变量的值是固定的,不能改变。

4、插入运算符"<<"和提取运算符">>"在C和C++位运算中是左移运算符和右移运算符,且在C++中又为输入输出运算符,这就是运算符的重载。

5、函数模板的定义:template<typename T>/template<class T>

函数模板只适用于函数参数个数相同而类型不同,且函数体相同的情况。

6、指定默认值的参数必须放在形参表列中的最右端,否则会出错。

使用带默认参数的函数时应注意:

(1)若函数的定义在函数调用之前,则应在函数定义中给出默认值;若函数的定义在函数调用之后,则在函数声明中给出默认值,函数定义时可不给默认值。

(2)一个函数不能即作为重载函数,又作为有默认参数的函数。

7、变量的引用(引用即别名):

(1)由于引用不是独立的变量,编译系统不给它单独分配存储单元,因此在建立引用时只有声明,没有定义,因此他必须与某一类型的数据相联系。声明引用时必须对它初始化。

(2)在声明一个变量的引用后,在本函数执行期间,该引用一直与其代表的变量相联系,不能再作为其他变量的别名。

(3)当&a的前面有类型标识符时,它是对引用的声明;若前面没有类型符,则&是取址运算符。

(4)引用的作用是用作函数参数,以扩充函数传递数据的功能。

#include<iostream>

using namespace std;

void swap(int &a,int &b)

{

  int temp;

  temp=a;

  a=b;

  b=temp;

}

int main()

{

  int i=3,j=5;

  swap(i,j);

  cout<<i<<endl<<j<<endl;

  return 0;

}

(5)不能建立void型的引用;不能建立引用的数组;可将变量的引用的地址赋给一个指针,此时指针指向原来的变量;可建立指针变量的引用;可用const对引用加以限制,不允许改变该引用的值;可用常量或表达式对引用进行初始化,但此时必须用const作声明。

8、使用内联函数可减少运行时间,但会增加目标程序的长度,因此只用于规模很小而使用频繁的函数,可大大提高运行速度。

9、 

#include<iostream>

using namespace std;

float a=13.5;

int main()

{

  int a=5;

  cout<<a<<endl;

  cout<<::a<<endl;

  return 0;

}

上述::a表示全局作用域中的变量a。注意:不能用“::”访问函数中的局部变量。

10、字符串变量的运算:

(1)可直接用赋值运算符实现字符串复制;

(2)可直接用加法运算符实现字符串连接;

(3)可直接用关系运算符实现字符串比较;

(4)编译系统为每个字符串变量分配固定的字节数,用以存放字符串的地址。

注:用字符数组时不能这样做:

char str[10];

str="Hello!";

11、new和delete是C++动态分配和撤销内存空间的命令,若由于内存不足等原因而导致无法正常分配空间,则new会返回一空指针NULL,可通过该指针的值来判断分配空间是否成功。