time函数初始化time类对象_104_类内初始化_默认构造函数_default

一. 类相关非成员函数

Time mytime;
writeTime(mytime);

二. 类内初始化

c++11中,可以为类内成员变量提供一个初始值,在创建对象的时候,初始值就可以用来初始化该成员变量。在头文件中可以赋初值。

三. const成员变量的初始化

  1. 在头文件定义时赋初值进行初始化
  2. 在构造函数的初始化列表中进行初始化,不可以通过赋值来初始化
//类定义(类声明)
class Time
{
private:
    int MilliSecond; //毫秒
public:
    void initMilliSecond(int mls);
public:
    int Hour; //小时
    int Minue; //分钟
    int Second = 0; //秒钟
    mutable int test; //测试变量
    const int ctestvalue = 80;  //定义了常量

    void initTime(int tmphour, int tmpmin, int tmpsec);
}
//构造函数列表
Time::Time():ctestvalue(70)
{
    Hour = 12;
    Second = 13;
    initMilliSecond(0);
    std::cout<<"调用了无参构造函数"<<std::endl;
}

四. 默认构造函数:没有参数的构造函数

没有构造函数,这些类对象如何初始化?

默认初始化, 通过一个特殊的构造函数来执行默认的初始化过程,这个特殊的构造函数就叫做默认构造函数 即无参数的构造函数。 原来,在类定义中如果没有构造函数的情况下,编译器就会为我们隐式的自动定义一个默认构造函数(无参) 称为合成的默认构造函数。 合成的默认构造函数其实什么也没做,成员变量有初始化值给初始化值,没有随机初始化。 一旦我们自己写了一个构造函数,不管构造函数的参数个数是多少,编译器都不会为我们创建“合成的默认构造函数”

五. =default =delete

time2.h

#ifndef __MYTIME2__
#define __MYTIME2__

class OtherClass
{
public:
    OtherClass(int x);

};

//类定义(类声明)
class Time2
{
public:
    explicit Time2(int a); //默认构造函数
    // Time2() {};
    Time2() =default; //编译器能够为这种=default的函数自动生成函数体 普通函数不能这样写, 带参数的构造函数也不能这样写
    Time2() =delete;  //让程序员显式的禁用某个函数
public:
    int Hour;
    int Minute;
    int Second = 0;
    OtherClass oc1;
};

#endif

time2.cpp

#include "time2.h"

Time2::Time2(int a ):oc1(3) //使用成员初始列表初始化oc1
{
    Second = 11;
}

OtherClass::OtherClass(int x)
{

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值