说我有一类称为Money具有参数Dollars和Cents
我可以通过以下两种方式初始化它:
我的问题是我应该何时使用(1)以及何时使用(2)
尽可能使用1,必要时使用2."当你必须"时基本上转换为"当你创建一个生命周期不是/不能与"范围"联系在一起的对象时 - 也就是说,它必须在创建它的函数退出后保持存在.你通常想要避免这种情况,例如通过返回有问题的对象的副本,而不是在函数返回后使该对象(本身)最后.
过去,(不幸的是)没有真正的硬性和快速的指导方针可以确保你做得尽可能好.
第一个Money在堆栈上创建一个对象,它的生命周期在创建它的范围内.当你点击}它时的含义超出范围并返回内存.如果要在一个函数中创建对象,请使用此选项.
第二个Money在堆上创建一个对象,它的生命周期就像你想要的那样,即直到你delete.当您希望将对象传递给不同的函数时,请使用此选项