我研究过auto
,我知道它从初始值中推断出类型。如果我尝试编写一些使用auto
的指南,我可以将下面的语句作为规则吗?
auto &&
表示可修改的所有值(r值和l值,因为它是通用引用),auto &&
即使是只读值,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 &&
可用于保存(初始化)任何值, OR auto &&
。 您认为这种方法存在任何缺陷吗?
答案 0 :(得分:-4)
1)是的 2)是的 3)正如你所说,&#39;个人偏好编码风格&#39;