gpt4 book ai didi

c++ - 为什么我不能在类中为静态变量设置值?

转载 作者:太空狗 更新时间:2023-10-29 20:19:37 25 4
gpt4 key购买 nike

我是 C++ 的新手,正在尝试使用类和静态变量。

我已经找到了使代码运行的解决方案,但我不确定为什么这有效以及为什么我以前的方法不起作用

#include <iostream>

using namespace std;

class Person {
static int id;
public:

void createPerson() {
id++;
cout << id << endl;
}

};

int Person::id = 0;


int main() {

Person Person1;
Person Person2;

Person1.createPerson();
Person2.createPerson();

}

我想知道为什么我必须在类外声明 id 的值。以及为什么我不能有类似的东西..

class Person {
static int id = 0;
public:

void createPerson() {
id++;
cout << id << endl;
}

};

最佳答案

static 数据成员不是对象的一部分,因此您需要通过提供该定义来明确告诉编译器将它们存储在哪个翻译单元中。

请注意,类模板的静态数据成员可以在头文件中定义。

在 C++17 中,static 数据成员可以声明为 inline,因此不需要外联定义。

关于c++ - 为什么我不能在类中为静态变量设置值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57803204/

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