gpt4 book ai didi

c++ - 如果私有(private)变量是静态的,它们在类之外是否可见?

转载 作者:行者123 更新时间:2023-11-30 02:56:03 25 4
gpt4 key购买 nike

在下面的示例中(取自 here),我们有一个私有(private)静态变量 x,然后我们在类之外更改它的名称。令我困惑的是为什么允许在类外更改私有(private)变量?那么将其声明为 private 的原因是什么。

// static_member_functions.cpp
#include <stdio.h>

class StaticTest
{
private:
static int x;
public:
static int count()
{
return x;
}
};

int StaticTest::x = 9;

int main()
{
printf_s("%d\n", StaticTest::count());
}

最佳答案

这不是“改变变量”,而是定义它。

每个 static 成员都必须在类外定义(static int x; 只是一个声明;如果你删除 int StaticTest::x = 9; 将出现一个链接器错误,类似于“对 StaticTest::x 的 undefined reference ”)。


尝试在 main 中更改它,例如:

StaticTest::x = 13;

你会得到你预期的错误(error: ‘int StaticTest::x’ is private)。

关于c++ - 如果私有(private)变量是静态的,它们在类之外是否可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15920278/

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