github上的每日学习 9
函数第三次
一、 构造函数的基本概念。
首先构造函数是什么?它是类中的特殊函数,用于描述初始化算法的。再深一步解释就是在对象被创建时使用特定的值构造对象,将对象初始化为一个特定的初始状态。例如:可以在Clock类,构造一个初始值为0:0:0的初始值。
要注意,构造函数的函数名与类名要相同,而且构造函数不能定义返回值类型,也不能用的return语句。
经过以上的介绍也知道了在创建一个对象的时候必须要用构造函数。
这时候其实如果程序员没有写的话系统会自己创建一个构造函数。
这叫做默认构造函数。这个构造函数的特点是:参数列表为空,不为成员设置初始值。
如果类内又指定初始值则用类内的初始值。
当然,还有一种情况是自己有写一个构造函数,但是又希望系统能生成默认的构造函数 时,这就需要用到default
具体示例如下!
class Clock {
public :
Clock=default;//告诉编译器需要给出隐含生产的构造函数
Clock(int newH,int newM,int newS);//自己写的构造函数
void setTime(int newH = 0,int newM = 0, int newS = 0);
void showTime();
private :
int hour,minute, second;
};
构造函数的使用:
Clock myClock(4,5,7);//这里表示创建一个对象,这个对象的函数值初始化为4,5,7,不可以再重复创建对象了
二、 构造函数的例子练习
怎么在class里面是声明和在函数中里创建对象调用已经在一中总结了,这里总结怎么写这个函数!
Clock::Clock(int newH,int newM,int newS)://冒号不能忘!冒号后面的列表表示实参赋值这里可以减少在函数体里面简单赋值的步骤,更方便。
hour(newH),minute(newM),second(newS){
}
了调试来看构造赋值的过程!
运行到构造函数:
对于的初始值:
默认构造函数的练习!
尝试两种的不同:
声明的不同:
函数定义的不同:
结果:
完整练习代码:
#include<iostream>
using namespace std;
class Clock {
public :
Clock(int newH,int newM,int newS);//不能定义返回类型!!
Clock();//默认构造函数
void setTime(int newH = 0,int newM = 0, int newS = 0);
void showTime();
private :
int hour,minute, second;
};
Clock::Clock(int newH,int newM,int newS):
hour(newH),minute(newM),second(newS)
{}
Clock::Clock() :
hour(0), minute(0), second(0)
{}
void Clock::setTime(int newH, int newM, int newS)
{
hour = newH;
minute = newM;
second = newS;
}
void Clock::showTime()
{
cout << hour << ":" << minute << ":" << second<<endl;
}
int main() {
Clock clock1(1, 3, 5);
Clock clock2;
clock1.showTime();
clock2.showTime();
return 0;
}