Em sex 14 fev 2014, às 15:59:28, Mandeep Sandhu escreveu:
> I have a need for defining an integer constant that'll be used for
> initializing a member variable of a private class.
> 
> The Qt coding conventions (http://qt-project.org/wiki/Coding-Conventions)
> recommend using an enum over 'const int'.
> 
> The rationale given there is that an enum will be replaced at compile-time
> resulting in 'faster code'. Won't that be the case with 'const int' as
> well? I think a 'const int' will be inlined in the code. CMIIW.

That is the case, *except* if you pass it via const-ref. If you do that, then 
ODR kicks in and you need to have the variable defined somewhere.

For variables in the file scope, the declaration is the definition, so it's not 
a problem. For variables in a class scope, the static const declaration is 
*not* the definition.

Try it:

struct Foo
{
        static const int Max = 128;
};

void f()
{
        QHash<int, QString> hash;
        hash.insert(Foo::Max, "Max");
}

Hint:
    iterator insert(const Key &key, const T &value);

(const ref for the key)

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to