C++构造函数初始化类对象

一.构造函数

【1】构造函数不需要在定义时声明类型
【2】构造函数不需要用户进行调用
【3】可以在类内,也可以在类外构造函数;在类外构造函数时,需要在类内进行声明。
【4】构造函数的名字必须与类名相同
【5】构造函数通常用于对类内的数据进行初始化

二.构造函数的分类

  1. 无参的构造函数
  2. 有参的构造函数
  3. 参数初始化表的构造函数【重点】

三.构造函数的写法

  1. 无参的构造函数

eg1.从键盘输入时分秒,并输出时间。
思路:

  • 写一个Time 类,公共数据由hourminutesecset_time函数和show_time函数组成,私有数据由,hourminutesec组成。
  • 写出两个函数set_timeshow_time函数还有主函数。
  • 在主函数建立对象进行调用。
#include<iostream>
using namespace std;
class Time
{
   public:
   		Time()
   		{
   			hour=0;
   			minute=0;
   			sec=0;
   		}
   		void set_time();
   		void show_time();
   private:
   		int hour;
   		int minute;
   		int sec;
};

void Time::set_time()
{
   cin>>hour;
   cin>>minute;
   cin>>sec;
}

void Time::show_time()
{
   cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
int main()
{
    Time t1;
    t1.set_time();
    t1.show_time();
    Time t2;
	t2.set_time();
    t2.show_time();
return 0;
}

以上代码是在类内构造函数,我们还可以在类外构造函数,但这也需要你在类内进行声明函数
类外的函数写法:

Time::Time()
{
	hour=0;
	minute=0;
	sec=0;
}

同时在类内的pubilc里加入:

Time();//函数声明

2.有参的构造函数
我们仍然用上面的例题作为分析:
对于有参数的构造函数我们需要做如下改动:

  • 声明构造函数的时候加入参数
Time(int,int,int);
  • 在类外定义带参数的构造函数
Time::Time(int h,int m,int s)
{
	hour=h;
	minute=m;
	sec=s;
}
#include<iostream>
using namespace std;
class Time
{
   public:
		Time(int,int,int);
   		void show_time();
   private:
   		int hour;
   		int minute;
   		int sec;
};

Time::Time(int h,int minute;int sec)
{
	hour=h;
	minute=m;
	sec=s;
}

void Time::show_time()
{
   cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
int main()
{
    Time t1(12,25,30);
    t1.show_time();
    Time t2(15,30,21);
    t2.show_time();
	return 0;
}
  • 在建立对象之后进行函数调用的时候,可以直接赋值参数
Time t1(12,25,30);
t1.set_time();
t1.show_time();

3.参数初始化表构造函数
我们依然用如上的例子进行解释。
首先在原有基础上的有参构造函数声明上

	Time(int,int,int);

将其修改为:

Time(int h,int m,int s):hour(h),minute(m),sec(s){};

当然主函数的对应调用函数依然不变。

#include<iostream>
using namespace std;
class Time
{
   	public:
   			Time(int h,int m,int s):hour(h),minute(m),sec(s);
   			void set_time();
   			void show_time();
   	private:
   		int hour;
   		int minute;
   		int sec;
   };
void  Time::set_time()
   {
   	cin>>hour>>minute>>sec;
   }
void Time::show_time()
   {
   	cout<<hour<<":"<<minute<<":"<<sec<<endl;
   }
int main()
{
	Time t1(12,25,30);
	t1.set_time();
    t1.show_time();
   return 0;
}

4.默认参数的构造函数

#include<iostream>
using namespace std;
class Time
{
   	public:
   			Time(int h=12,int m=25,int s=30);
   			void set_time();
   			void show_time();
   	private:
   		int hour;
   		int minute;
   		int sec;
   };
 Time::Time()
   {
	hour=h;
	minute=m;
	sec=s;
	}
void  Time::set_time()
   {
   	cin>>hour>>minute>>sec;
   }
void Time::show_time()
   {
   	cout<<hour<<":"<<minute<<":"<<sec<<endl;
   }
int main()
{
	Time t1;
	t1.set_time();
    t1.show_time();
   return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeLinghu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值