构造函数
构造函数的基本概念
-类中的特殊函数
-用于描述初始化算法
构造函数的作用
~ 在对象被创建时使用==特定的值== 构造对象,
将**对象**==初始化==为一个特定的初始状态
例如:
- 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; //调用无参数的构造函数
...
}