sir*_*rg3 12 c++ static pointers
class Foo {
public:
static const int kType = 42;
};
void Func() {
Foo *bar = NULL;
int x = bar->kType;
putc(x, stderr);
}
Run Code Online (Sandbox Code Playgroud)
这是定义的行为吗?我阅读了C++标准但是找不到任何关于访问静态const值的内容......我已经检查了GCC 4.2,Clang ++和Visual Studio 2010生成的程序集,并且它们都没有执行NULL的解引用指针,但我想确定.
Mic*_*urr 10
您可以使用指针(或其他表达式)来访问静态成员; 但是,遗憾的是,通过NULL指针这样做是官方未定义的行为.从9.4/2"静态成员":
可以使用qualified-id表达式X :: s来引用类X的静态成员; 没有必要使用类成员访问语法(5.2.5)来引用静态成员.可以使用类成员访问语法来引用静态成员,在这种情况下,评估对象表达式.
基于以下示例:
class process {
public:
static void reschedule();
};
process& g();
void f()
{
process::reschedule(); // OK: no object necessary
g().reschedule(); // g() is called
}
Run Code Online (Sandbox Code Playgroud)
目的是允许您确保在此方案中调用函数.
归档时间: |
|
查看次数: |
1919 次 |
最近记录: |