构造函数

构造函数

构造函数的基本概念

-类中的特殊函数
-用于描述初始化算法

构造函数的作用

~ 在对象被创建时使用==特定的值== 构造对象,
	将**对象**==初始化==为一个特定的初始状态
	
	例如:
	-  Clock 类对象时,
	- 将初始时间 设定为 0:0:0

构造函数的形式

	1.函数名与类名相同
	2.不能定义返回值类型,也不能有 ==return== 语句
	3.形式参数-->可有可无
	4.内联函数-->可以
	5.默认参数值-->可以

构造函数的调用时机

- 在对象创建时被自动调用
- 例如:
- 	Clock myClock(0,0,0)

默认的构造函数

	-参数调用时 ==不需要实参== 的构造函数
		-参数表为空的构造函数
		-全部参数都有默认值得构造函数
	==下列两个都是默认构造函数==
	==如在同类出现,产生变异错误==
	Clock()	;
	Clock(int newH = 0, int newM = 0,int newS = 0);

`

隐含生成的构造函数

-如果程序中为定义构造函数,编译器将自动生成一个==默认的构造函数==
 -如果参数列表空,不为数据成员设定初始值;
 -如果类内定义了成员的初始值,这是用类内定义的初始值;
 -如果没有定义类内的初始值,则默认方式初始化;
 -基本类型的数据默认初始化的值是不确定的。

“=default”

-如果程序中已定义构造函数,默认情况下编译器就不会隐含生成默认构造函数 。

  • 如果此时依然希望编译器隐含生成默认构造函数,可以使用 ”=dafault “
    例如:
class Clock {
	public:
		Clock() = default; // 指示编译器提供默认构造函数
		Clock(int newH = 0, int newM = 0,int newS = 0);
	private:
		int hour, minute, second;
};

构造函数 举例

#include <iostream>
using namespace std;

//类定义

class Clock {
	public:
		Clock(int newH , int newM,int newS); //构造函数
		void setTime(int newH, int newM,int newS);
		void showTime(); // showwTIme 内联函数 
	private:
		int hour, minute ,second;	
};

//构造函数的实现:
Clock::Clock(int newH, int newM,int newS):
	hour(newH), minute(newM), second(newS){//hour = newH .. 
	}
	
//showTime 内联函数实现 
inline void Clock::showTime() {
	
	cout << hour << ":" << minute <<":" << second << endl;
} 

// 主函数 
int main(){
	Clock c(0,0,0); // 自动调用构造函数 
	c.showTime(); 
	return 0;
}

默认构造函数的举例

//类定义

class Clock {
	public:
		Clock(int newH , int newM,int newS); //构造函数
		Clock(); // 默认构造函数 
		
		void setTime(int newH, int newM,int newS);
		void showTime(); // showwTIme 内联函数 
	private:
		int hour, minute ,second;	
};
//默认构造函数实现 
Clock::Clock():	hour(0), minute(0), second(0){}

int main(){
	Clock c1(8,10,0);//调用有参数的构造函数
	Clock c2; //调用无参数的构造函数
	...
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值