学习到了C++的构造函数了,之前上的课比较简单加上自己也有一定的编程基础,所以一直都没觉得有什么压力,今天的课感觉有点难了~~
构造函数的作用
- 在对象被创建时,使用特定的值构造对象,将对象初始化为一个特定的初始状态。
例如:希望在构造一个Clock类对象时,将初始时间设为0:0:0,就可以通过函数来设置。
构造函数的形式
- 函数名与类名相同
- 不能定义返回值类型,也不能有return语句
- 可以有形式参数,也可以没有形式参数
- 可以是内联函数
- 可以重载
- 可以带默认参数值
构造函数的调用时机
在对象创建时被自动调用
例如:
Clock myClock(0, 0, 0)
默认构造函数
- 调用时可以不需要实参
1、参数表为空的构造函数
2、全部参数都有默认值的构造函数
下面两个都是默认构造函数,如在类中同时出现,将产生编译错误:
Clock();
Clock(int newH = 0, int newM = 0, int newS = 0);
隐含生成的构造函数
- 如果程序中未定义构造函数,编译器将自动生成一个
默认构造函数
- 参数列表为空,部位数据成为设置初始值;
- 如果类内定义了成员的初始值,则使用内类定义的初始值;
- 如果没有定义类内的初始值,则以默认方式初始化;
- 基本类型的数据默认初始化的值时不确定的
举例
- 函数的普通定义方法:
#include <iostream>
using namespace std;
class Clock{
public:
void setTime(int newH = 0, int newM = 0, int newS = 0);
void showTime();
private:
int hour, minute, second;
};
void Clock::setTime(int newH, int newM, int newS){
hour = newH;
minute = newM;
second = newS;
}
void Clock::showTime(){
cout << hour << ":" << minute << ":" << second;
}
int main(){
Clock myClock;
myClock.setTime(8, 30, 30);
myClock.showTime();
return 0;
}
- 构造函数方法之一:
#include <iostream>
using namespace std;
class Clock{
public:
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::Clock(int newH, int newM, int newS):
hour(newH), minute(newM), second(newS){
}
void Clock::showTime(){
cout << hour << ":" << minute << ":" << second;
}
int main(){
Clock c(0, 0, 0); // 自动调用构造函数
c.showTime();
return 0;
}
- 构造函数方法2——自动调用构造函数
#include <iostream>
using namespace std;
class Clock{
public:
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::Clock(int newH, int newM, int newS):
hour(newH), minute(newM), second(newS){
}
void Clock::showTime(){
cout << hour << ":" << minute << ":" << second;
}
int main(){
Clock c(0, 0, 0); // 自动调用构造函数
c.showTime();
return 0;
}
- 构造函数方法3——包含默认构造函数和自动构造函数
#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():
hour(0), minute(0), second(0){
}
Clock::Clock(int newH, int newM, int newS):
hour(newH), minute(newM), second(newS){
}
void Clock::showTime(){
cout << hour << ":" << minute << ":" << second;
}
int main(){
Clock c1(8, 10, 0); // 调用有参数的构造函数
c1.showTime();
Clock c2;
c2.showTime();
return 0;
}