【发布时间】:2012-03-24 15:51:45
【问题描述】:
声明:“静态成员变量只能通过静态方法更改。”
这个说法正确吗,静态成员变量也可以用非静态方法改变吗?
谢谢!
【问题讨论】:
标签: c++ variables static member non-static
声明:“静态成员变量只能通过静态方法更改。”
这个说法正确吗,静态成员变量也可以用非静态方法改变吗?
谢谢!
【问题讨论】:
标签: c++ variables static member non-static
这是不正确的。静态成员可以被非静态成员函数访问和修改。
【讨论】:
错了。 static 数据成员可以被任何成员函数更改。 static方法也可以被任何成员函数调用。
反之则不可能:static 方法不能调用非static 方法,也不能访问非static 成员。
这是因为static 成员(方法和数据)绑定到类,而非静态绑定到类实例。
【讨论】:
陈述不正确。您可以从任何类成员函数以及静态成员可见的任何其他函数修改静态成员(即可以从任何地方修改公共静态)。
【讨论】:
static 数据成员(和静态成员函数)可以从程序中的任何位置访问,只要访问说明符允许:
struct test {
void foo() {
x = 1;
bar();
}
static bar() {
x = 2;
}
static int x;
};
int test::x = 0;
int main() {
test::bar();
test::x = 3;
}
【讨论】: