gpt4 book ai didi

c++ - 基本成员初始化与在类声明中分配默认值

转载 作者:行者123 更新时间:2023-11-30 02:50:39 42 4
gpt4 key购买 nike

我正在阅读有关 C++ 中的基本/成员初始化的信息,但我并不真正了解发生了什么。考虑以下示例 Date 类:

// CLASS DECLARATION
class Date
{
private:
int month;
int day;
int year;
public:
Date(int = 7, int = 4, int = 2012); // CONSTRUCTOR
Date(const Date&); // COPY CONSTRUCTOR
void showDate(); // MEMBER FUNCTION TO DISPLAY DATE
};

可以通过以下方式创建 Date 对象:Date a; 它将把 a 的成员变量赋值给 7/4/2012。现在,像下面这样进行基本成员初始化有什么区别:

// class declaration section
public:
Date(int mo=7, int da=4, int yr=2012):month(mo), day(da), year(yr) {}

相当于:

// class declaration section
public:
Date(int = 7, int = 4, int = 2012); // prototype with defaults
// class implementation section
Date::Date(int mo, int da, int yr) : month(mo), day(da), year(yr) {}

谁能解释一下这两种情况的区别?有什么区别,为什么你会做第二种情况?它只是在构造函数中初始化默认值的另一种方法还是还有更多?谢谢。

最佳答案

基本上没有区别。在第一种情况下,您在一个步骤中声明和定义构造函数(因此 {} 括号)。在第二种情况下,您首先声明构造函数,然后定义/实现它。但是初始化列表只能在定义中,不能在声明中。

关于c++ - 基本成员初始化与在类声明中分配默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20271106/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com