关于构造函数的介绍(一)

以前在我们进行定义一个变量的时候,会手动进行输出初始化。在基于对象的程序中,定义一个对象时候,需要做初始化的工作,也就是对数据成员赋初值,那么该如何做呢?
class Time
{
public:
   hour = 0;
   minute = 0;
  second =0 ;
}             
        我们通常会这样想,但这是一种错误的写法,因为这定义的是一个类,并不是一个实体,而是一种抽象类型,并不占存储空间,显然无法容纳数据。
        假若一个类中的数据成员都是公有的,我们可以这样初始化,Time t1 = (12,32,24);但假如数据成员是私有的,或者类中有有private和protected的数据成员,就不能用这种方法进行初始化。为了解决这个问题,c++中提供了构造函数来处理对象的初始化,它是一种特殊的成员函数,与其他的成员函数的不同,不需要用户调用,而是在建立对象时候自动执行。
构造函数的特点:名字与类名同名,而不能任意命名,没有任何类型,不返回任何值。

#include<iostream>
using namespace std;
class Time
{
public:
    Time()
    {
        hour = 0;
        minute = 0;
        second = 0;
    }
    void set_time();
    void show_time();
private:
    int hour;
    int minute;
    int sec;
}
void Time::set_time()
{
    cin >> hour >> endl;
    cin >> minute >> endl;
    cin >> second >> endl;
}
void Time:show_time()
{
    cout<<hour<<":"<<minute<<":"<<second<<endl;
}
int main()
{
    Time t1;
    t1.set_time();
    t1.show_time();
    Time t2,
    t2.show_time();
    return 0;
}

此时我们直接在构造函数中对数据成员进行初始化,输出的结果:前者t1的结果是自己主动输入的结果,后者没有输入,默认是是初始化的结果,也就是t2输出的结果。此时是默认不带参数的构造函数。
在执行主函数时候,首先建立对象t1,此时自动执行构造函数Time,在执行构造函数Time过程中对t1对象中的数据成员赋初值0,然后执行主函数中的t1.set_time()函数,从键盘输入新值赋给对象t1的数据成员,再输出t1的数据成员的值。接着建立对象t2,同时自动执行构造函数Time,对t2中的数据成员赋初值0,但主函数中没有对t2的数据成员赋新值,直接输出数据成员的初值。

构造函数使用说明:

  • 在建立,定义类对象的时候,自动调用构造函数,而且只能调用一次(在建立每个类对象时候都只能调用一次)
  • 构造函数没有返回值,它的作用只是对对象进行初始化。
  • 构造函数不需要用户调用,也不能被用户调用
  • 构造函数的函数体不仅可以对数据成员赋初值,还可以对包含其他语句。
  • 可以用一个类对象来初始化另一个类对象,如:Time t1; Time t2 = t1;
  • 如果用户没有定义构造函数,则c++系统会自动生成一个构造函数,只是该函数是空的,没有参数,不执行初始化操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值