【C++】类和对象——构造函数

构造函数

概念

“构造函数”一般在类类型对象的初始化时被调用,每一个对象只能在初始化的时候调用一次。

特性

  1. 无返回值
  2. 名字与类名相同
  3. 属于函数重载
class Date
{
    public:
    // 构造函数初始化类类型成员
    
    // 尽量选择全缺省以适配无参调用
    // 在.h文件中声明全缺省函数
    // Date(int year = 1, int month = 1, int day = 1);
    
    Date(int year, int month, int day)
    {
        _year = year;
        _month = month;
        _day = day;
    }

    private:
        int _year;
        int _month;
        int _day;
};

调用方法

// 有两种调用构造函数的方法

// 方法一:

// 对于d1,可以不完全传参,也可以不传,因为函数声明为全缺省参数
    Date d1(2024, 5, 22);
    Date d1(2024, 5);  // 此时,day的值将会由对应传参位置的缺省值赋值
    Date d1;  // 此时为无参调用,d1的值就是缺省值

重点知识:

  • 如果没有显示构造函数,编译器也会自己生成一个构造函数,对于内置类型成员,C++没有规定要做处理,所以可能会被初始化为1或随机值;
  • 对于自定义类型,编译器会调用该自定义类型的构造函数。
class Time
{
public:                 // 3.此时,编译器找到了Time,但是Time没有显式
                        //   构造函数,所以对于内置类型,编译器可能不做处理
private:
    int s;
};

class Date
{
public:

private:
    int _year;               // 1.如果没有显式构造函数,系统则会自动生成
    int _month;              //   对于内置类型,可能做处理
    int _day;

    Time t;                  // 2.对于自定义类型,则会调用其构造函数   
};

总结:表面上说对于自定义类型,调用其构造函数,但自定义类型中的成员终究也含有内置类型,所以还得去写内置类型的构造函数。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值