zoukankan      html  css  js  c++  java
  • c++复习——类(1)

    1.  拷贝构造函数 //并没有搞懂 先存着吧  遇到实际情况再回来看看

    拷贝构造函数在以下三种情况被调用:
    (1)当用一个已经初始化过的对象去初始化同类另一个对象时,
    拷贝构造函数被调用。
    Sample S2(S1);
    Sample S2 = S1;
    (2)如果某函数有一个参数是类 A 的对象,那么该函数被调用
    时,类A的拷贝构造函数将被调用
    void f( A a )
    {
    a.x = 1;
    };
    A aObj;
    f ( aObj) ;
    // 导致A的拷贝构造函数被调用,生成形参传入函数
    71(3)如果函数的返回值是类A的对象时,则函数返回时,A的拷
    贝构造函数被 调用
    A f( )
    {
    A a;
    return a; // 此时A的拷贝构造函数被调用,即调用A(a);
    }
    int main( )
    {
    A b;
    b = f();
    return 0;
    }
     
     
    2.析构函数不能带任何参数,也没有返回值(void类型也不行)。一个类最多只能有一个析构函数,不能重载
     
     
    3.构造函数和析构函数的调用顺序
    (1)对于全局定义的对象(在函数体外定义的对象)   class完以后马上接对象
    在程序开始执行时(包括main()函数在内的所有函数执行之前)调用构造函数,到程序结束或调用exit()函数终止程序时才调用析构函数。
     
    (2)对于局部定义的对象(在函数内定义的对象) 在main函数里一个一个定义对象
    在程序执行到定义对象的地方时调用构造函数,到函数结束时才调用析构函数。
     
    (3)用static定义的局部对象
    在首次到达对象定义位置时调用构造函数,在程序结束时调用析构函数。
     
    (4)对于用new运算符动态生成的对象
    在产生对象时调用构造函数,只有用delete释放对象时,才调用析构函数。若不使用delete运算符来撤销动态生成的对象,则析构函数不会被调用。
     
     
     
    4.静态成员
    静态数据成员
     
    (1)不管一个类的对象有多少个,其每个静态数据成员都只有一个,由这些对象所共享,可被任何一个对象所访问。如果该类的某个对象修改了静态数据成员的值,那么,其他所有同类的对象都将共享被修改后的数值。
     
    (2)在一个类的对象空间内,不包含静态成员的空间,所以静态成员所在空间不会随着对象的产生而分配,或随着对象的消失而回收。
     
    (3)静态数据成员存储空间的分配是在程序一开始运行时就被分配的,并不是在程序运行过程中在某一函数内分配空间和初始化。
     
    (4)静态数据成员的初始化语句,既不属于任何类,也不属于包括主函数在内的任何函数,静态数据成员初始化语句应当写在程序的全局区域中,并且必须指明其数据类型与所属的类名。
     
    (5)如果未对静态数据成员赋初值,则编译系统会自动赋予初值0。
     
    静态成员函数
    (1)出现在类体外的静态成员函数定义不能指定关键字static。
     
    (2)静态成员函数之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数。
     
    (3)非静态成员函数可以任意地访问静态成员函数和静态数据成员。
     
    (4)静态成员函数不能直接访问非静态成员函数和非静态数据成员。
     
     
  • 相关阅读:
    学习笔记:松弛
    学习笔记:可持久化线段树
    poj 3784 Running Median
    学习笔记:树状数组
    poj 2823 Sliding Window 题解
    学习笔记:状态压缩DP
    学习笔记:单调队列
    C++ 竞赛常用头文件
    mongodb lock 出毛病时解决方法
    ag使用需要注意的问题
  • 原文地址:https://www.cnblogs.com/yuuuuu422/p/12084745.html
Copyright © 2011-2022 走看看