C++ 类别';方法和对象。推荐人?聪明的指针?简单初始化?

C++ 类别';方法和对象。推荐人?聪明的指针?简单初始化?,c++,object,methods,reference,smart-pointers,C++,Object,Methods,Reference,Smart Pointers,在过去的几天里,我一直在钻研引用和智能指针,但我仍然不知道什么时候应该使用它 特别是对于我正在尝试编写的非常简单的程序。 其中不应共享对象值,而只应修改trought,从X或Y方法返回其类型的值 如果我没有弄错的话,引用在记忆中更容易,但只涉及一件事。 其中as智能指针更稳定,可以重新映射以指向其他对象 第一个问题: 对于下面示例中的对象的简单更改,是否需要创建引用或指针? 我认为,从长远来看,随着程序复杂性的增加,让初始化的对象完成它们的工作可能会产生延迟问题等等 第二个问题: 据我所知,当在

在过去的几天里,我一直在钻研引用和智能指针,但我仍然不知道什么时候应该使用它

特别是对于我正在尝试编写的非常简单的程序。 其中不应共享对象值,而只应修改trought,从X或Y方法返回其类型的值

如果我没有弄错的话,引用在记忆中更容易,但只涉及一件事。 其中as智能指针更稳定,可以重新映射以指向其他对象

第一个问题:

对于下面示例中的对象的简单更改,是否需要创建引用或指针? 我认为,从长远来看,随着程序复杂性的增加,让初始化的对象完成它们的工作可能会产生延迟问题等等

第二个问题:

据我所知,当在方法中用作参数时,引用对象将减轻内存上的压力,而不是将对象复制粘贴到其中? 智能ptr也有同样的功能吗

类的头文件:

-Items.h-
class Health_Potion
{
public:
    int qty = 0;

    static int add_health_potion(int current, int add); 

};
方法的cpp文件:

-Items.cpp-

int Health_Potion::add_health_potion(int current, int add)
{
    int new_current = current + add;

    cout << add << " potion added to your inventory.\n";
    cout << "Quantity available: " << new_current << "\n";
    return current + add;

}
-Items.cpp-
智力健康药剂::添加智力健康药剂(智力当前,智力添加)
{
int new_current=当前+添加;
库特
我还是不知道什么时候用哪个

当有疑问时,使用最简单的方法。只有当最简单的方法是不够的或笨拙的时候,才有理由考虑更复杂的事情(在这一点上,你有一个起点来决定使用哪一个)。 我还是不知道什么时候用哪个


当有疑问时,使用最简单的方法。只有当最简单的方法是不够的或笨拙的时候,才有理由考虑更复杂的事情(在那一点上,你有一个起点来决定使用哪一个)。.

嗯……很公平。我想我现在对需要的东西想得太多了。我将从基本的开始,然后从那里开始。谢谢。@Erzats和未来读者的旁注:任何对过度思考感到沮丧的人都应该进入“过度工程”进入他们最喜欢的搜索门户…有人需要一个茶壶来告诉你这是一个茶壶吗?:)嗯…很公平。我想我现在对需要什么的过程想得太多了。我将从基本开始,然后从那里开始。谢谢。@Erzats和未来读者的旁注:任何对过度思考感到沮丧的人都应该进入“过度设计”到他们最喜欢的搜索门户…有人需要一个茶壶来告诉你这是一个茶壶吗?:)
-Main-

int main()
{

// Initializing the method to be used:
// Question: Should this also be stored into a smart_ptr or referenced to?
Health_Potion add_method;
add_method.add_health_potion;
______________________________________________

// The unique_ptr version I got:

std::unique_ptr<Health_Potion> entity(new Health_Potion); //Unique_ptr

entity -> qty = add_method.add_health_potion(rentity -> qty, roll); //returning new value to the pointer through method
______________________________________________

//The reference version I got:

Health_Potion obj1;
int & refqty = obj1.qty; //reference to object of qty created

refqty = add_method.add_health_potion(refqty, roll); //returning new value to the reference through method
}