C++基础知识

C++的新特性

  1. cout是预定义的标准输出流对象,标准输出流对象代表控制台输出,通常指的是计算机的屏幕。“<<”为输出运算符,可用于输出C++语言中任何基本类型的数据。在C++中将数据送到输出流中称为“插入(inserting)”或“放到(putting)”。所以“<<”常被称为“插入运算符”。

  2. cin是预定义的标准输入流对象,标准输入流对象代表控制台输入,通常指的是计算机的键盘。输入运算符“>>”从输入设备键盘取得数据送到输入流cin中,然后送到内存。在C++中,这种输入操作称为“提取(extracting)”或“获取(getting)”,“>>”常被称为“提取运算符,可用于输入C++语言中的任何基本类型的数据”。

  3. 输入和输出不是C++语言的组成部分,它们由流库iostream支持。流库在iostream.h中声明并定义。因此C++程序必须包含头文件iostream.h,才能使用标准输入输出流库中的对象cin或者cout进行I/O操作。

  4. const 修饰符

  • 符号常量的定义和初始化:

    1:在C中,可以使用#define来定义符号常量

    eg:   #define PI 3.1415926

    2:C++中提供关键字const 来定义符号常量

                     Eg:   const float PI=3.1415926;

                              constint v[]={1,2,3,4};//数组元素v[i]是常量

                              const int x;//定义常量时应该赋值否则出错

3C++中的常量必须指明类型,如果没有指明类型,编译器默认int型。

  • const修饰函数参数

    当一个函数不必修改调用参数指向的对象时,参数则用const修饰,这样可以组织参数被函数修改,减少程序中的错误,显著提高软件的可靠性。

  • const 和指针

当用到指针时,const所修饰的对象牵涉到指针本身和它所指向的对象两个实体。当我们将关键字const 放到一个指针声明的前面时,这时指针所指向的对象成为常量。

Eg:     char s[]=”glory”;

        const char* pc=s;//指针pc所指向的字符串为常量,可以修改pc的值

            char* const cp=s;//常指针(固定指针),可以改变常指针所指向的对象,但不能改变常量指针的值。

Eg:      char *const cp;//cp是个常指针,指向字符串(对象可变,指针不变)

            char const*cp1;//cp1是指针,指向常量字符串

     const char* cp2;//cp2是一个指针,指向字符串常量。

  1. 内联函数

  • 定义:在函数声明或定义的前面加上关键字inline,该函数就被声明为内联函数。内联函数又称内嵌函数或内置函数。

       Eg: inline  int max(int x,int y) //max被说明为内联函数

    {

                         int  z;

                     if(x>y)z=x;

                         else z=y;

            return z;   }

  • 目的:在C++语言中设置内联函数的目的是为了提高程序的执行效率,从而消除函数调用时的时间开销,提高运行速度。

  • 内联函数可以是类的成员函数,如果直接在类的内部给出成员函数的定义,该函数自动成为内联函数,此时无需使用关键字inline说明。

    Eg:   class date

    {

                                int day,month,year;

    public:

                      void init_date(int dd,int mm,int yy)//内联函数

                      {day=dd;month=mm;year=yy;}

    };

  1. 函数原型

  • 函数返回值类型 函数名(函数参数及其类型的列表)

  • 作用:C++语言是强类型化语言,任何函数在使用以前必须有该函数的原型说明,以便进行实际参数与形式参数之间的类型匹配检查。

  • C++的语法允许我们在声明函数原型时省略参数名。

    Eg: inttranslate(float,float,float);

  1. 带缺省参数的函数

  • 含义:1:可以在函数原型中可以给参数赋值,这些值称为缺省值

          2:函数调用时允许缺省部分或者全部实际参数,这时C++的编译器自动地以缺省值作为相应的实际参数值。

                       Eg:void  myfunc(double d=0.0)

    {

    ……  

    }

                                      3:如果给某个参数一个缺省值,那么其后的所有参数都需要赋给缺省值,否则编译时,会出错。

  1. 函数名重载

  • 在C++语言中允许两个或两个以上的函数使用相同的函数名,这种情况称为函数名重载。Eg:         int  abs(int n);//求整数的绝对值

                                                     Long  abs(long n);//求长整数的绝对值

                                                     Double  abs(double n);//求双精度数的绝对值

  • C++中函数重载的关键是,重载的函数必须具有不同参数列表,即要么参数类型不同或者参数个数不相等。只有返回类型不同的函数不能重载。

  1. new和delete运算符

  • 在C++中不仅可以像C里面一样用malloc()分配动态内存,用函数free()释放动态内存。而且还可以使用new 分配动态内存,用delete释放动态内存。执行new操作时,如果有足够的内存空间,则按要求从动态内存分配空间,new运算符返回指向该内存起始地址的指针;如果内存空间不够,则返回空(NULL)指针。delete运算符释放new分配的动态内存。

    Eg:   int *p;

              P=new int;//为整数分配动态内存空间

  • 优点:1:简洁性:new能自动分配的足够的内存空间以容纳指定类型的对象,而不必使用sizeof运算符。New自动返回指定的正确类型的指针,由此无需使用类型转换。

    2:可靠性:由于分配的内存空间的大小是自动计算的,所以能够防止分配错误数量的内存单元。并且在编译时进行类型匹配检查,能够尽早发现类型不匹配错误。

    3:灵活性:new和delete运算符可以被重载。

  • 用new申请的动态内存,必须用delete释放,否则会引起运行时错误。

  1. 引用

  • 定义:在声明一个变量时,在变量名的前面加上&就将该变量声明为一个引用。引用的最重要的用法是作为函数参数。

  • 引用是一个隐含指针,所以函数使用引用参数时是一种传址调用方式。即在调用函数时传送实际参数的地址。

    Eg:

    指针参数                           引用参数        比较

       Swap(&j,&i);                         Swap(j.i);

    Void Swap(int *x,int*y)                                  void Swap(int &x,int &y)

    {                                                                                   {

             Int temp;                                                                  inttemp;

             Temp=*x;                                                                           temp=x;

    *x=*y;                                                                        x=y;

    *y=temp;                                                                  y=temp;

    }                                                                                   }

  • 使用引用参数相比指针参数好处:

    1:实际参数的地址被自动传递,不需要记住传递参数的地址

    2:比指针参数方法更清晰,更简便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值