• 静态成员


    指针、引用必须注意浅深拷贝

    浅拷贝:只复制地址,没复制值

    缺省方式的拷贝构造和拷贝赋值,对包括指针在内的基本成员变量按字节赋值,导致浅拷贝问题。

    为了获得完整意义上的对象副本,必须自己定义拷贝构造和拷贝赋值,针对指针型成员变量做深拷贝。

    赋值表达式的值是操作符左值的引用。运算符重载的返回值都是自引用形式(return *this)

    拷贝赋值运算符

    class_name& operator = (const class_name & that)

    {if(&that != this)//防止自赋值

    delete class_value;//释放旧资源

    class_value = new type (*that.class_value)//分配新资源

    //拷贝新数据

    ..;

    return *this;//this是对象指针,*this,代表对象本身---、、返回自引用

    }

    静态成员变量

    静态成员属于类而不属于对象,只有一份,供所有对象所共享。

    静态成员函数没有this 指针,也不可以有const;

    静态成员可由对象访问,也可由类访问

    静态成员变量必须在类外定义,而不能用构造函数定义

    静态成员函数只能访问静态成员变量

    普通成员函数可以访问静态成员变量、静态成员函数

    class A
    {
    public:
        static int m_sdata;//静态成员变量是类的一部分,而不是对象的一部分。
        //不因构造而定义,与构造函数无关,需单独定义
        //全生命周期
        //可通过对象访问也可通过类访问
        static void set (int data)
        {//静态成员函数无法访问非静态成员变量,因为没有this指针
            m_sdata = data;
        }
        static int get ()
        {    
            return m_sdata;
        }
        int m_data;
    };
    int A::m_sdata = 10;//静态成员变量需单独定义
    int main()
    {
        cout << sizeof(A) << endl;//对象的内存大小
        cout << A::m_sdata << endl;
        A a;
        cout << a.m_sdata << endl;
        a.set(200);
        cout << a.get() << endl;
        cout << A::get() << endl;
    
    system("pause");
    return 0;}
  • 相关阅读:
    [翻译]理解offsetWidth,clientWidth,scrollWidth以及Height
    [翻译]Chrome控制台API参考
    前端最新面试题
    前端面试题HTML+CSS
    css代码优化的12个技巧
    重构、标准、布局
    跨域的场景及跨域方式
    ajax
    那些我们该知道的数组操作
    全国最新行政区划省市区三级数据表(2018年9月),可直接用Python处理后导入数据库
  • 原文地址:https://www.cnblogs.com/day-up/p/5153839.html
Copyright © 2020-2023  润新知