关于各类函数的整理

在这里插入图片描述

头文件 TTime.h

class TTime
{
  int hour;
  int minute;
  int second;
public:
	TTime();                 //重载的无参构造函数
    TTime(int h,int m,int s);//有参构造函数
	TTime(const TTime & a);  //拷贝构造函数
    ~TTime();                //析构函数
	void SetTime(int h,int m,int s);
	void PrintTime();
};

函数定义 TTime.cpp

#include <iostream>
#include "TTime.h"
using namespace std;

TTime::TTime()
{
	hour=minute=second=0;//无参函数赋初值
}
TTime::~TTime()
{
    cout<<"Good Bye!"<<endl;
}
TTime::TTime(int h,int m,int s)
{
	hour=h;minute=m;second=s;
}
TTime::TTime(const TTime & a)//拷贝函数定义
{
	cout<<"AAAAAAAAAAAAAAAA"<<endl;
	hour=a.hour;    //this->hour=a.hour
	minute=a.minute;//this->minute=a.minute
	second=a.second;//this->second=a.second;
	                //*this=a
}

void TTime::SetTime(int h,int m,int s)
{
	hour=h;minute=m;second=s;
}
void TTime::PrintTime()
{
	cout<<hour<<":"<<minute<<":"<<second<<endl;
}

主函数 main.cpp

#include <iostream>
#include "TTime.h"
using namespace std;

int main()
{
   TTime t1(10,40,50),t2,t3(t1);//t2输出默认初始值,t3复制t1
                                //t3=t1是将t1赋值给t3
   t1.PrintTime();
   t2.PrintTime();
   t3.PrintTime();

   t1.SetTime(10,20,30);
   t1.PrintTime();
   return 0;
}

结果:
在这里插入图片描述
注:调用析构函数未显示可能是编译器问题,可将cout换成printf进行输出,就可显示
在这里插入图片描述
默认构造函数:自动提供,不赋初值
TTime::TTime
{
}

若无构造函数时,
TTime t1;
t1.PrintTime(); //ok,但为随机值

TTime t1(10,40,50);//error,无构造函数
t1.PrintTime();

当提供TTime构造函数时
TTime t1(10,40,50),t2;
//error,只要提供构造函数,系统就不再提供默认构造函数
t1.PrintTime();
t2.PrintTime();

若再提供重载的无参构造函数,则上式成立

用t3=t1赋值时系统提供默认赋值运算符重载
t3(t1)是复制

析构函数:对象所在的函数已调用完毕时,系统自动执行析构函数,如果不写,系统自动生成,无参,不能重载,先创建的对象后释放,先释放t3,再释放t2,最后释放t1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值