c++在c上的提升。

来源:互联网 发布:三菱plc编程指令详解 编辑:程序博客网 时间:2024/04/29 07:23

  C++语言既保留了C语言的有效性、灵活性、便于移植等全部精华和特点,又添加了面向对象编程的支持,具有强大的编程功能,可方便地构造出模拟现实问题的实体和操作;编写出的程序具有结构清晰、易于扩充等优良特性,适合于各种应用软件、系统软件的程序设计。用C++编写的程序可读性好,生成的代码质量高,运行效率仅比汇编语言慢10%~20%。


为了使编译器能够区别是C语言还是C++语言,C++语言体系规定用“.cpp”(意即C Plus-Plus)作为C++语言源文件的扩展名以区别于C语言用的“.C”文件扩展名。虽然仅差两个字母,但编译时的处理却相差甚远。 “cpp”的文件扩展名与操作系统无关。与C++语言源文件相关的头文件扩展名一般仍用“.h”,但有些操作系统也有规定使用“.hpp”充当头文件扩展名的。


1. 段注释: /*…*/
 2. 单行注释:// 
 当只做单行注释时便可用“//”符号表示从此符号起至行尾均为行注释内容。
 3. 程序编译时将忽略所有的注释内容。


名字空间域是随标准C++而引入的。它相当于一个更加灵活的文件域(全局域),可以用花括号把文件的一部分括起来,并以关键字namespace开头给它起一个名字:
namespace  ns1
{
     float a,b,c;
     fun1(){……}
}



花括号括起来的部分称声明块。声明块中可以包括:类、变量(带有初始化)、函数(带有定义)等。在域外使用域内的成员时,需加上名字空间名作为前缀,后面加上域操作符“::” 。这里添加了名字空间名称的成员名被称为限定修饰名。如:ns1::a,ns1::fun1()等等。
  最外层的名字空间域称为全局名字空间域(global namespace scope),即文件域。
名字空间域可分层嵌套.
使用using指示符可以一次性地使名字空间中所有成员都可以直接被使用。using指示符以关键字using开头,后面是关键字namespace,然后是名字空间名。


标准C++库中的所有组件都是在一个被称为std的名字空间中声明和定义的。在采用标准C++的平台上使用标准C++库中的组件,只要写一个using指示符:
 using namespace std;
  就可以直接使用标准C++库中的所有成员。
  注意:如果使用了名空间std,则在使用#include编译预处理命令包含头文件时,必须去掉头文件的扩展名.h,否则会出错。
 一般一个C++的老的带“.h”扩展名的库文件,比如iostream.h,在新标准后的标准库中都有一个不带“.h”扩展名的相对应,新标准库中除了好多改进之外,还将后者所含的都塞进了“std”名字空间中。




 C++语言另外定义了一套保留字与运算符来替代C语言中对标准输入、输出函数的引用。C++语言的保留字为:
   cout<<“输出内容”<<…;      
 //cout为标准输出流对象(默认输出到显示器)
   cin>>输入内容>>…;       
 // cin为标准输入流对象(默认从键盘输入)
使用前需包含头文件iostream.h
      #include "iostream.h"
   或 #include <iostream.h>


在C语言中,局部变量说明必须置于可执行代码段之前,不允许局部变量声明和可执行代码混合在一起。但C++在变量的定义上作了两种较大的改变,一是允许变量的定义语句可以出现在程序的任何位置,使得局部变量的定义点与使用点不至于离得太远,增强程序的可读性,而且也不必在编写某一程序块的开始时就考虑要用到哪些变量;二是允许直接使用结构体名定义变量,这种扩展为程序员在编程中提供了不少方便。类似地在C++语言中联合名、枚举名也可在定义后独立地作为类型名使用。


1.new运算符
      指针变量 = new 数据类型;
  new从堆内存中为程序分配可以保存某种类型数据的一块内存空间,并返回指向该内存的首地址,该地址存放于指针变量中。
  堆内存可以按照要求进行分配,程序对内存的需求量随时会发生变化,有时程序在运行中可能会不再需要由new分配的内存空间,而且程序还未运行结束,这时就需要把先前占用的内存空间释放给堆内存,以后重新分配,供程序的其它部分使用。


2.delete运算符
   运算符delete用于释放new分配的内存空间,它的使用形式为:
        delete  指针变量;
其中的指针变量保存着new动态分配的内存的首地址。
3. 注意:
(1) 用new获取的内存空间,必须用delete进行释放;
(2) 对一个内存空间只能调用一次delete;
(3) 用delete运算符作用的对象必须是用new分配的内存空间的首地址。


 指针变量 = new 数据类型[数组大小];
  此时指针变量指向第一个数组元素的地址。使用new分配数组时,不能提供初始值。使用new建立的数组变量也由delete释放。其形式为:
     delete 指针变量;
或:  delete [ ]指针变量;
   同样,也可以用new来为多维数组分配空间,但是除第一维可以为变量外,其它维数都必须是常量。
 注意:  在使用delete时,不用考虑数组的维数。


引用是C++语言的一个特殊的数据类型描述,用于在程序的不同部分使用两个以上的变量名指向同一地址,使得对其中任一个变量的操作实际上都是对同一地址单元进行的。在这种两个以上变量名的关系上,被声明为引用类型的变量名则是实际变量名的别名。
引用运算符为&,声明引用的一般形式为:
数据类型 &引用变量名 = 变量名;
或  数据类型& 引用变量名 = 变量名;
或  数据类型 & 引用变量名 = 变量名;
    对引用进行操作,实际上就是对被引用的变量进行操作。引用不是值,不占存储空间,声明引用时,目标的存储状态不会改变。引用一旦被初始化,就不能再重新赋值。


函数模板的一般说明形式如下:
template<模板参数表>
<类型名>< 函数名> (模板函数形参表)
{
    // 函数定义体
 }
   <模板参数表>尖括号中不能为空,参数可以有多个,用逗号分开。模板参数主要是模板类型参数。模板类型参数(template type parameter)代表一种类型,由关键字 class 或 typename后加一个标识符构成,在这里两个关键字的意义相同,它们表示后面的参数名代表一个基本数据类型或用户定义的类型。

0 0