静态成员

摘要:
=此)//防止deleteclass_值的自赋值;//释放旧资源类_值=新类型//分配新资源//复制新数据;return*this;//这是对象指针,*这表示对象本身--,,return self reference}静态成员变量静态成员属于一个类,而不是一个对象,只有一个副本供所有对象共享//它不是因为构造而定义的,与构造函数无关。需要单独定义//可以通过对象或类访问整个生命周期//静态成员函数无法访问非静态成员变量,因为没有此指针m_data=data;}staticinget(){returnm_data;}intm_data;};intA::m_sdata=10;//静态成员变量需要单独定义intmain(){cout<<sizeof<<endl;//对象cout的内存大小<<A::m_data<<end1;Aa;cout<˂A.m_data<˂endl;A.set;cout><A.get()<<<end l;cout≤<A::get()><endl,system;return0;}

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

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

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

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

赋值表达式的值是操作符左值的引用。运算符重载的返回值都是自引用形式(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;}

免责声明:文章转载自《静态成员》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQLServer数据访问telnet批量测试端口脚本下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

final修饰静态成员变量。

目标:final修饰静态成员变量。   final修饰变量的总规则,有且仅能被赋值一次。   final修饰静态成员变量,变量变成了常量。   常量:有public static final 修饰,名称字母全部大写,多个单词用下划线连接。  拓展:   final修饰静态成员变量可以在哪些地方赋值一次。   1,定义的时候赋值一次。   2,可以在静态代码...

类型初始值设定项引发异常

-上午打开VS编译程序的时候,突然出现了这个运行时错误“类型初始值设定项引发异常”。昨天还没有这个错误呢,今天就突然出现,搞得我一头雾水。上网搜了一下,发现有很多人遇到了这个问题。经过一番折腾解决了这个问题后,发现很多人都没有意识到其症结所在,于是写这个随笔,给大家点启发,也给自己做个备忘。症状描述: 我的程序需要连接一台MQ服务器(其实就是个台式机,每天...

Java 的类加载顺序

Java 的类加载顺序 一、加载顺序:先父类后子类,先静态后普通 1、父类的静态成员变量初始化 2、父类的静态代码块 3、子类的静态成员变量初始化 4、子类的静态代码块 5、父类的普通成员变量初始化 6、父类的普通代码块 7、父类的无参构造器 8、子类的普通成员变量 9、子类的普通代码块 10、子类的无参构造器 二、示例代码   超级父类A,父类B,子类C...

面向对象复习笔记(一)

一.概念1.面向对象概念:世界万物皆对象。2.对象的组成:两部分a.成员属性 :对象的数据模型,用于描述对象的数据,又称为对象的属性,或者对象的成员变量。b.成员方法:对象的行为模型,用于描述对象能够做什么事情,又被称为对象的方法。3.对象的特点:a.每个对象都是独一无二。b.对象是一个特定的事物,他的职能是完成特定的功能。c.对象是可以重复使用的。4.什...

PHP (20140522)

类常量: 可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。 常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。 类的静态变量: 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,(类名::...