。(点)访问静态方法

时间:2011-01-19 03:14:58

标签: c++

以下是一个受欢迎的代码:

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是静态方法,但是可以访问点运算符,而且更直观地看到它。

您如何看待?

2 个答案:

答案 0 :(得分:3)

如果使用obj.static_member(或方法)更清楚,那就使用它;当类型名称很长时(例如使用模板),这通常是正确的。否则使用Type :: static_member。

答案 1 :(得分:2)

只要您从静态方法返回static变量,它应该没问题。如果使用点或分辨率运算符调用它并不重要。无论哪种方式,它都是对象的一部分以及应该为您提供相同static变量的类。