这个问题已经在这里有了答案:




已关闭8年。






我已经使用c++多年了,但是仍然有我没有回答的问题。
我正在定义一个c++类,但对此有一些疑问

问题1:我应该使用指针存储投资还是否?

Investment* investment;
// or
Investment investment;

问题2:为什么?

问题3:万一我使用Investment investment;,是否应该以这种方式返回引用Investment & getInvestment();

我知道我的代码都可以使用,但是我想知道这样做的有效方法。

代码如下:
class Urgency
{
private:
    Investment* investment;
public:
    Urgency(Investment* investment);
    ~Urgency(void);

    Investment* getInvestment();
};

最佳答案

我通常喜欢在对象较大时使用指针,而在对象较小时使用堆栈对象。指针允许某些事情,例如惰性初始化和前向声明,而堆栈对象则减少了创建自己的副本构造函数所需的可能,并且不必担心在析构函数中显式销毁该对象。 (尽管,您可以使用共享的指针类型的对象来为您执行此操作)此外,堆栈对象的访问速度通常更快,但是在大多数情况下,这不应成为选择一个对象的理由,因为大多数情况下申请微不足道。

在引用您的代码时,通常会返回const Investment &,以便不允许直接修改Investment对象。如上所述,如果使用原始指针,则应创建一个副本构造函数和一个析构函数,以正确管理对象上的内存。对于指针对象,通常将再次返回const Investment *,以消除外部调用者直接修改对象的能力。

返回const正确的投资对象时,请注意函数在投资类中的声明方式。如果只是Investment::getNumShares(),则将无法使用const引用或const指针访问该函数。若要解决此问题,请将所有不将对象修改为const的成员函数(例如Investment::getNumShares() const)标记为

08-28 17:45