非正式地,如果一个对象的值被读取(除非它是一个编译时常量)或写入,其地址被采用,或者一个引用被绑定到该对象,则该对象被使用; .. ...如果一个对象,一个引用或一个函数被使用,它的定义必须存在于程序的某个地方; 违反此通常是链接时错误。
但是在视觉工作室2015中:
#include <iostream>
using namespace std;
class A{
public:
static const int k=666;
};
int main() {
const int&s=A::k;//no warning?undefined behavior?
cout << &A::k << endl;//no warning,no error?
return 0;
}
根据cppref:
如果使用了odr-used
,则需要在课外定义