-2

我研究过auto,我知道它从初始化值中推断出类型。如果我尝试编写一些使用指南auto,我可以将以下语句作为规则吗?

  1. 用于auto &&所有可修改的值(r 值和 l 值,因为它是通用参考),
  2. auto &&即使对于只读值,
  3. auto尽可能使用(个人偏好的编码风格)。

编辑

class Test
{
public:
    Test() = default;
    Test(const Test&) = default;
    Test(Test&&) = default;

    int i = 1;
};

Test getObj()
{
    return Test();
}

Test& getObjByRef()
{
    static Test tobj;
    return tobj;    
}

const Test getObjConst()
{
    return Test();
}

int main()
{
    auto && obj1 = getObj();
    obj1.i = 2;

    std::cout << " getObj returns: " << getObj().i << std::endl;

    auto&& obj2 = getObjByRef();
    obj2.i = 3;

    std::cout << " getObjByRef returns: " << getObjByRef().i << std::endl;

    auto && obj3 = getObjConst();

    //obj3.i = 4;  => //Error   C3490   'i' cannot be modified because it is being accessed through a const object

    return 0;
}

所以在上面的例子中,我使用auto &&了所有三个功能

  • getObj
  • getObjByRef
  • getObjConst

它按预期工作。现在我可以得出结论

  • auto &&可用于保存(初始化)任何值,
  • 我们可以使用auto &&每一个可能的地方。

您看到这种方法的任何缺陷吗?

4

1 回答 1

-4

1) 是 2) 是 3) 正如你所说,“个人对编码风格的偏好”

于 2016-07-12T09:10:23.417 回答