gpt4 book ai didi

c++ - (C++) 为什么静态成员在初始化之前可以使用?

转载 作者:行者123 更新时间:2023-11-28 01:27:43 26 4
gpt4 key购买 nike

<分区>

我写了这段测试代码:

#include <iostream>
using namespace std;

class Date {
int d;
int m;
int y;

public:
static Date default_date;

public:
Date(int d, int m, int y) {
default_date.display();
this->d = d ? d : default_date.d;
this->m = m ? m : default_date.m;
this->y = y ? y : default_date.y;
}
void display() { std::cout << d << "-" << m << "-" << y << std::endl; }
};

Date Date::default_date(25, 12, 2018);

int main() {
Date d = Date(0, 0, 0);
d.display();
Date::default_date.display();
}

输出是:

0-0-0
25-12-2018
25-12-2018
25-12-2018

好的,这是我的问题。

静态成员 default_date 在类定义之外使用类的构造函数进行初始化。

但是,当调用构造函数时,似乎default_date 已经存在。我什至执行 default_date.display() 并获得输出 0-0-0

为什么我可以在构造/初始化之前访问 default_date

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