• 类和对象


    1.

    //说明部分

    class  类名  定义类可用关键字class,struct。class默认访问权限private,struct默认访问权限public

    {

      public:类体内可见,类体外可见

      private:仅类体内可见

      protected:对定义它的类而言相当于私有成员,对该类的派生类而言相当于公有成员

    };

    //实现部分

    函数类型 类名::成员函数名 (参数表)

    定义对象 Date d1;

    2.构造函数 用于初始化对象,函数名同类名,无类型,无返回值,自动调用

      默认构造函数         Date();   若用户没有定义任何构造函数,系统会自动创建一个默认的构造函数

      带参数的构造函数    Date(int x);

      拷贝构造函数      Date (Date &d1){ }     若用户没有定义拷贝构造函数,系统会自动创建一个默认的拷贝构造函数

    3.析构函数   用来释放所创建的对象,函数名同类名,无类型,无返回值,自动调用,

          用户没有定义析构函数时,系统会自动创建一个默认的析构函数

          没有参数,不能重载

    4.成员函数:可以重载

          可以说明为内联函数,加关键词inline

          参数可以设置默认值

    5.静态数据成员:可以实现同类多个对象之间是数据共享,它属于所有对象,如果它的值被改变,则各个对象中该数据成员的值都被改变

            对静态数据成员初始化不用构造函数,而是系统开辟公共的储存单元

            静态数据成员除了可以使用对象名引用外,还可以使用类名来引用

       说明:static int b;

       初始化:int Date::b=1;(必须初始化

       引用:Date::b;

    6.静态成员函数

      说明:static int function();

      引用:Date::function() 或  d.function()

      静态成员函数中不能引用非静态成员。

    7.常数据成员

      其值不能改变

      说明:const int a;

      初始化:(采用构造函数的成员初始列表来实现) Date(int x):d=1 ,a=2 { }

      既是静态数据成员又是常数据成员的放在类体外初始化

      1)对象的常引用

         定义:const A &ra=a;

    8.常成员函数

      说明:int function()const { }  (const放在函数头后面)

      用const可以与不带const的函数重载

      常对象只能调用常成员函数,不能调用非常成员函数

      非常数据成员在常成员函数中可以引用,但不可改变,而常数据成员在常成员函数中和非常成员函数中都不可改变

      常对象的数据成员都是常数据成员,其值不得改变,但是,常对象的没加修饰符const的成员函数,仍然是非常成员函数

    9.友元函数

      说明在类体内的一般函数,也可以是另一个类中的成员函数

      友元函数不是这个类中的函数,但是能访问该类所有成员,但访问时不能直接引用,必须使用对象进行引用

      友元函数在调用上同一般函数,不必通过对象进行引用

      破坏封装性,少用

      说明:friend int function(); 若定义在类体外,同一般函数,不用加friend

    10.友元类

      class A

      {

        friend class B;

      }

      B是A的友元类,B的所有函数都是A的友元函数,B中的所有函数都可以访问A,但A不能访问B

    11.类型转换

      1)算数运算时,低类型自动转换成高类型(浮点X整数,系统自动将整形转换为浮点型)

      2)赋值表达式中,右边的表达式类型自动转换为左边变量的类型

      3)函数调用时系统将实参转换为形参类型后再传值

      4)函数有返回值时,系统自动将返回的表达式的类型转换为该函数的类型后,再将表达式的值返回给调用函数

      5)一般数据类型转换为类类型:若类中有只含一个参数的构造函数,则可用d=20给一个类赋值,系统自动调用单参数的构造函数将20转换成D类对象

      6)类类型转换为一般数据类型:用类型转换函数

        定义:operator double() {具体转化规则}

        一个类中允许定义多个类型转换函数,可将该类的对象转换成不同的数据类型

     12.对象指针

      定义:Date *pd=&d1;

      指向对象的指针主要用来作函数参数和返回值

      当对象指针做函数形参时,函数实参是同类对象的地址值

      对象指针作参数实现传址调用,具有补拷贝副本,只传地址值的高传输效率,又有可在被调用函数中可以改变调用函数中实参值。

    13.指向对象的常指针

      定义:Date * const pd;

      该指针指向固定的对象,不能使其指向别的对象,但该指针所指向的对象内容可以改变。

      指向常对象的指针

      定义:const Date *pd;

      该指针不能改变所指对象的值,但可以指向别的对象  

      如果有一个常对象,指向它的指针一定要用指向常对象的指针,指向一般对象的指针是不行的

      指向常对象的指针可以用一般对象的地址值进行赋值,但是不能通过该指针改变对象的值

      使用指向常对象指针引用的成员函数应该是常成员函数

      指向常对象的指针可作为函数参数,这样可以保证不会在被调用函数中通过指针改变调用函数的值

      pd->Print() = (*pd).Print

    14.this指针

      用来指向正在被某个成员函数所操作的对象, 它的值是当前被调用的成员函数所在的对象的起始地址

      使用情况:在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this

           另外一种情况是当参数与成员变量名相同时,如this->n = n (不能写成n = n)

    15.对象引用

      定义:A &ra=a;

      对象的引用常用来作函数的形参,其实参为对象名

      引用调用有传址调用的机制和特点,而比传址调用更简单和方便

     16.对象数组

      数组内放对象

      定义:A a[5];

      1)对象指针数组 

        定义:A *a[4]  数组元素是指向对象的指针

      2)指向对象数组的指针

        定义:A (*a)[4]  指向数组的指针

    17.子对象

      在一个类中可以使用另一个类的对象做其数据成员

      当一个类中出现了对象成员时,该构造函数就要包含给子对象的初始化

      A (int i,int j):b(i,j)

      必须放在成员初始化列表中的有常数据成员和子对象,多个初始化项用逗号隔开

      构造函数所在类的数据成员的初始化既可放在成员初始化列表中,也可以放在构造函数的函数体内

    18.堆对象

      1)用new创建一个对象或其他类型变量

        new A 或者 new int

        new运算符组成的表达式的值是一个地址值,通常将它赋给一个同类型的指针,于是这个指针便指向所创建的对象或变量

      2)用new创建一个对象数组或其他类型数组

        new A[10] 或者 new int[10]

      3)用delete释放对象或变量

        delete p

        将p所指的对象或变量释放掉

      4)用delete释放对象数组或其他类型数组

        delete [] p

        将p所指向的对象数组或变量数组多占的内存空间释放掉,一次释放一个数组

  • 相关阅读:
    我眼中的性能测试工程师
    珠海沙龙 《如何Hold性能测试》圆满结束!
    Silverlight性能测试工具
    性能测试十大误区
    珠海沙龙 《如何Hold性能测试》
    LoadRunner性能测试实战训练【广州 11月 晚班】
    pylot 一款开源的web性能测试工具
    用p6spy进行JDBC性能监控
    LoadRunner发送SNMP协议包
    用JMeter来测试Tomcat的性能
  • 原文地址:https://www.cnblogs.com/syyy/p/6075000.html
Copyright © 2020-2023  润新知