C++构造函数 / 析构函数 / 复制构造函数

无聊的废话:

距离开始放假已经过去半个月了,这半个月,品读了一本实用型的绘画书籍,作了几幅作品,又做了一个模型,只是探索未知领域总会遇到各种问题,甚至难以解决的问题,笔者颓废了两天煲了一部剧,觉得自己深深的辜负了时间,决定动手总结一下学过的知识,主要是总结数据结构,不过笔者看到当初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来释放)

}

 

好啦,本篇到此完

第一次写稿子,不懂行情,蛮费劲的,好害怕写出来的东西懂的人都懂,不懂的人看了也不懂,那简直太失败了,希望本篇能对那些新新人们有一点点帮助

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值