小编roh*_*unb的帖子

C++ auto&vs auto

创建局部变量时,使用(const) auto&或是正确的auto吗?

例如:

SomeClass object;
const auto result = object.SomeMethod();
Run Code Online (Sandbox Code Playgroud)

要么 const auto& result = object.SomeMethod();

SomeMethod()返回非原始值 - 可能是另一个用户定义的类型.我的理解是const auto& result正确的,因为SomeMethod()返回的结果将为返回的类型调用复制构造函数.如果我错了,请纠正我.

原始类型怎么样?我认为const auto sum = 1 + 2;是正确的.

这是否也适用于基于范围的循环?

for(const auto& object : objects)
Run Code Online (Sandbox Code Playgroud)

c++ auto

58
推荐指数
3
解决办法
4万
查看次数

移动共享指针的构造函数和=运算符

说,我有一节课:

class GameObject ///header file
{
    ....
    std::shared_ptr<Transform> transform;
}
///cpp file
//Copy Ctor
GameObject::GameObject(const GameObject& rhs)
   :transform(rhs.transform)
{}
//Move CTor
GameObject::GameObject(GameObject&& rhs)
    :transform(std::move(rhs.transform))
{}
Run Code Online (Sandbox Code Playgroud)
  1. 为具有shared_ptr成员变量的类创建移动构造函数是否正确?或者我需要rhs.transform.reset()在搬家后打电话取消分配rhs吗?
  2. 复制构造函数怎么样?
  3. 据推测,复制和移动任务看起来与ctors基本相同,只是return *this在最后?

c++ smart-pointers move shared-ptr

6
推荐指数
1
解决办法
2201
查看次数

标签 统计

c++ ×2

auto ×1

move ×1

shared-ptr ×1

smart-pointers ×1