以下是一个受欢迎的代码:
class A
{
public:
static const string TYPE = "AEvent";
const string& getType() { return TYPE; }
};
以上代码可以像这样使用:
if (aInstance.getType() == A::TYPE)
{
...
}
没关系。但这并不直观。没有?看下一个代码:
class A
{
public:
static const string& getType()
{
static const string TYPE = "AEvent";
return TYPE;
}
}
//Usage
if (aInstance.getType() == A::getType())
....
当然,getType是静态方法,但是可以访问点运算符,而且更直观地看到它。
您如何看待?
答案 0 :(得分:3)
如果使用obj.static_member(或方法)更清楚,那就使用它;当类型名称很长时(例如使用模板),这通常是正确的。否则使用Type :: static_member。
答案 1 :(得分:2)
只要您从静态方法返回static
变量,它应该没问题。如果使用点或分辨率运算符调用它并不重要。无论哪种方式,它都是对象的一部分以及应该为您提供相同static
变量的类。