无聊的废话:
距离开始放假已经过去半个月了,这半个月,品读了一本实用型的绘画书籍,作了几幅作品,又做了一个模型,只是探索未知领域总会遇到各种问题,甚至难以解决的问题,笔者颓废了两天煲了一部剧,觉得自己深深的辜负了时间,决定动手总结一下学过的知识,主要是总结数据结构,不过笔者看到当初c++的笔记,决定再巩固一下基础知识,一来和大家交流,算是开个好头,二来方便以后查阅.
构造函数
首先假定一个时间类,以此为例进行初始化
class time
{private: int hour; int minute; int second;}
构造函数的形式一共有三种
1、time()
{cout<<"请输入时间 时:分:秒"<<endl;
cin>>hour>>minute>>second;
}
2、time(int h;int m;int s)
{hour=h; minute=m; second=s; }
或者采用初始化列表的形式 ,如
time(int h;int m;int s):hour(h), minute(m), second(s) {}
3、time(int h=0;int m=0;int s=0)
{hour=h; minute=m; second=s; }
注:第三种构造函数可以定义无参,一个参数,两个参数,三个参数等多种对象
一般类的构造函数都会重载,提供多种初始化方式
析构函数
先用构造函数初始化一个数组
array(int nn)
{int i; n=nn; a=new int[n];
for(i=0;i<n;i++)
{cin>>a[i]; }
} //这里的n是动态数组元素个数,a是元素指针
~array()
{delete []a;}
复制构造函数
1、普通复制(默认复制)
date(date&d)
{year=d.year; month=d.month;day=d.day;
}
2、深复制(有动态成员,用深复制)
class student
{private: int no ; char *name ; float score;
public:
student(int n, char *na, int s)
{ no=n;
name=new char[strlen(na)+1];
strcpy(name,na);
score=s;
} //先构造,熟悉吧
student(const student&st)
{no=st.no; score=st.score;
name=new char[strlen(st.name)+1];
strcpy(name,st.name)
} // 深复制就是重新创造一个空间来存放name的值,而不是两个name指针指向同一个空间
~student()
{if (name!=NULL)
delete []name
} //最后把new申请的堆栈空间手动释放掉(但凡new申请的,都必须用delete来释放)
}
好啦,本篇到此完
第一次写稿子,不懂行情,蛮费劲的,好害怕写出来的东西懂的人都懂,不懂的人看了也不懂,那简直太失败了,希望本篇能对那些新新人们有一点点帮助