我可以使用点表示法访问类的静态成员变量,还是应该使用双冒号的访问运算符?
答案 0 :(得分:13)
如果您有实例变量,则可以使用点运算符访问静态成员(如果可访问)。
#include <iostream>
using namespace std;
class Test{
public:
static int no;
};
int Test::no;
int main(){
cout << "\n" << Test::no;
Test::no=100;
Test a;
cout << "\n" << a.no;
return 0;
}
答案 1 :(得分:2)
您必须使用双冒号访问运算符。这是从类名访问静态成员的唯一有效方法。
答案 2 :(得分:2)
这不一定是“你可以”的问题(因为编译器通常会让你关闭警告),但是“你应该”问题。
静态数据成员不是对象的一部分,因此不应该这样对待。
将静态数据成员作为“普通”数据成员访问可能会使代码的可读性降低,因为它可能意味着不同的语义(尽管这通常不太可能)。