c++:什么构造函数

  • 为什么要使用构造函数?
    在C++中部分的成员是私有的,而类的私有的成员变量在类外是不允许访问的,所以这就意味着程序不能直接访问数据成员,而程序只能通过成员函数来访问数据成员,因此需要合适的成员函数,才能将成功将对象初始化。(大家就疑惑了,那直接把成员定义为公有不就可以了吗?其实这才是错误的,这样定义类的成员违背了类的主要初衷数据隐藏)

  • 声明和定义构造函数
    成员变量为私有的要对其进行初始化,必须要用一个共有函数来进行,同时这个函数应该有且仅在定义的对象的时候自动执行一次,这时调用的函数称为构造函数。
    构造函数是特殊的成员函数特征如下:
    1)函数名与类名相同
    2)无返回值(构造函数的原型和函数头都有一个特征,虽然没有返回值,但没有被声明为void型,实际上构造函数没有声明类型)
    3)对象构造时系统自动调用相对的构造函数
    4)构造函数可以重载
    5)构造函数可以在类内定义也可以在类外定义
    6)如果在类定义中没有给出构造函数,系统会默认生成一个缺省的构造函数,但只要我们定义了一个构造函数,系统就不会生成缺省的构造函数
    7)无参的构造函数和全缺省的构造函数,都认为时缺省的构造函数,且缺省的构造函数只能有一个。
    举例一个日期类:

  • 无参构造函数和带参构造函数

 class Date
 {
	 public:
	 Date()//无参的构造函数
	 {}
	 Date(int year,int month,int day)//带参的构造函数
	 {
		 _year=year;
		 _month=month;
		 _day=day;
	 }
	 private:
	 int _year;
	 int _month;
	 int _day;
};	
void TestDate()
{
	Date d1;//调用不带参的构造函数
	Date d2(2018,9,3);//调用带参的构造函数
} 
  • 带缺省的构造函数
class Date
{
	public:
	Date(int year=2018,int month=1,int day=1)//缺省参数的构造函数
    {
		_year=year;
		_month=month;
		_day=day;
	}
	Date(int year,int month)//半缺省的构造函数
	{
		_year=year;
		_month=month;
		_day=1;
	}
	private:
	int _year;
	int _month;
	int _day;
};
void Test()
{
	Date d1;//调用缺省构造函数
	Date d2(2018,9,3);//调用缺省构造函数
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值