【C/C++】【类和对象】类内初始化和默认构造函数

类内初始化

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

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

原文链接: https://www.cnblogs.com/NaughtyCoder/p/13324481.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    【C/C++】【类和对象】类内初始化和默认构造函数

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/366917

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 下午5:06
下一篇 2023年3月2日 下午5:11

相关推荐