C++(笔记)深浅拷贝and静态static基础练习

来源:互联网 发布:大数据与建筑 编辑:程序博客网 时间:2024/06/05 06:49
/* 定义一个Data类,里面包含一个指针型成员变量 int *data,和一个普通成员变量 int x。在类的构造函数里面给 data申请存放100个int 的空间,在析构函数里释放空间。为Data类的data变量设置存取函数。为Data类重新拷贝构造函数。对完成的类进行测试。*/#include <iostream>using namespace std;class Data{    private:        int *data;        int x;    public:        Data(){}        Data(int  _x):x(_x)        {            data=new int[100];        }        Data(Data &p):x(p.x)        {            data=new int[100];        }        ~Data()        {            delete []data;        }    public:        void setdata(int *q);        void getdata();};void Data::setdata(int *q){    data=q;}void Data::getdata(){    for(int i=0;i<4;i++)    cout<<*(data+i)<<endl;}int main(){    int w[4]={1,2,3,4};    Data a(2);    a.setdata(w);    a.getdata();    Data b;    b=a;    b.getdata();    return 0;}/*定义一个Tank类,使之具有一个无参构造函数、一个带参构造函数和一个拷贝构造函数,此外还有一个名为number(编号,int 型)的成员变量,设置好存取函数。给Tank类添加一个静态成员变量count 用来给Tank对象计数,当有对象生成时计数器加1,对象消亡时计数器减1。添加一个静态成员函数用来获取count变量的值。完成Tank类,并对其进行测试。*/#include <iostream>using namespace std;class Tank{    private:        int number;        static int count;    public:        Tank(){}        Tank(int number1=0):number(number1)        {            count++;            }        Tank(Tank &p):number(p.number)        {            count++;                }        ~Tank()        {            count--;            }        int getnumber()        {            return number;        }        static void showcount()        {            cout<<"last:"<<count<<endl;        }};int Tank::count=0;//静态成员变量一定要初始化,且一定要在类外int main(){       Tank a(5);    cout<<a.getnumber()<<endl;    Tank::showcount();  //静态成员函数的访问格式    Tank b(a);    cout<<b.getnumber()<<endl;    Tank::showcount();    return 0;}
  • static变量,值变后会保存,而没有static直接int,值变后不会保存,回到原来初始值,这就是static的作用
  • 静态(static)注意点:
    1.主函数中静态成员函数访问:类名::函数名——所以可以看出静态成员函数不需要对象生成就可以访问
    2.静态成员变量一定要初始化,且在类外:int 类名::变量名=0;
    3.不提倡用:类名.函数—–因为这样的话和普通成员函数访问方式是一样的,无法看出是static类型。
4 0
原创粉丝点击