类内初始化、默认构造函数、=default

010成员属性的类内初始化_常量成员属性初始化

#include<iostream>
#include<cstdlib>
#include<string>
#include<vector>
using namespace std;

class Time
{
public:
	int Hour;
	int Minute={0};
	int Second=0;	//类内初始值
	//常量属性使用构造函数初始化列表方式初始化
	const int TestConst;
public:
	explicit Time(int Hour, int Minute, int Second);
	Time(int Hour);
	Time():TestConst(12) {}

};
//友元函数访问类中的私有数据成员。公有数据成员可以直接访问。
void ReadTime(Time&MyTime)
{
	cout << MyTime.Hour << endl;
}

Time::Time(int TemHour, int TemMinute, int TemSecond) :Hour(TemHour), Minute(TemMinute), Second(TemSecond),TestConst(12)//把形式参数赋值给成员属性
{
}
Time::Time(int Hour):TestConst(12)
{
	this->Hour = Hour;
}


int main(void)
{
	Time myTime01 = Time(12, 12, 12);

	//类相关的非成员函数调用
	ReadTime(myTime01);

	//类内初始化
	Time myTime02;	//Minute=Second=0  
	
	system("pause");
	return 0;

}


/*
*(1)类相关非成员函数
*	和类几乎无关的成员函数,访问私有数据成员---友元函数
*	访问公有数据成员,可以直接访问
*(2)类内初始化
*	在c++11中我们可以为类内成员变量提供一个初始值。创建对象的时候,使用初始值来初始化该成员变量。
*	
*(3)常量属性的成员属性必须在构造函数初始化列表中初始化,在{}后不能给值。
*
*/

011默认构造函数

#include<iostream>
#include<cstdlib>
#include<string>
#include<vector>
using namespace std;

class Time
{
private:
	int Hour;
	int Minute;
	int Second;
public:
	explicit Time(int Hour, int Minute, int Second);
	Time(int Hour);
    Time(){}

};

Time::Time(int TemHour, int TemMinute, int TemSecond) :Hour(TemHour), Minute(TemMinute), Second(TemSecond)//把形式参数赋值给成员属性
{
}
Time::Time(int Hour)
{
	this->Hour = Hour;
}


int main(void)
{
	//Time myTime01 = Time(12, 12, 12);

	Time myTime02;	//调用默认构造函数
	system("pause");
	return 0;

}


/*
*(1)默认构造函数--没有任何参数的构造函数
*	1.如果没有任何构造函数,系统默认给一个默认构造函数,编译器自动定义一个默认构造函数,这个叫“合成的默认构造函数”
*	2.一旦我们写了构造函数,系统就不会自动创建默认构造函数。
*(2)当进行类的组合时候,会包含其他类的对象,必须使用成员初始化列表和初始值,手工写自己的构造函数。
*(3)
*2019年11月17日09:11:05 Sunrise于东北电力大学第二教学楼1121实验室
*
*/

012 =default =delete自动为构造函数生成函数体

#include<iostream>
#include<cstdlib>
#include<string>
#include<vector>
using namespace std;

class Time
{
private:
	int Hour;
	int Minute;
	int Second;
public:
	explicit Time(int Hour, int Minute, int Second);
	Time(int Hour);
	Time() = default;	//编译器为=default这种函数自动生成函数体
	//Time() = delete;	//让编译器禁止生成某个函数
};

Time::Time(int TemHour, int TemMinute, int TemSecond) :Hour(TemHour), Minute(TemMinute), Second(TemSecond)//把形式参数赋值给成员属性
{
}
Time::Time(int Hour)
{
	this->Hour = Hour;
}


int main(void)
{
	Time myTime01 = Time(12, 12, 12);

	//默认构造函数
	Time myTime02;	//默认构造函数
	system("pause");
	return 0;

}


/*
*(1)=default =delete
	Time() = default; 编译器能够自动为我们生成函数体,用于特殊的函数
	只能用于构造函数,拷贝构造函数等特殊函数
*(2)Time() = delete;	//让编译器禁止生成某个函数
*(3)
*
*/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值