函数的C ++指针参数,如何避免更改输入

时间:2015-01-29 04:14:04

标签: c++ function pointers reference arguments

所以我有一个函数将指针作为参数。与

类似
Type *Foo(unsigned int head, Type *fixed, Type *period)
{
Type *periodCopy = new Type;
*periodCopy = *period;
Type *fixedCopy = new Type;
*fixedCopy = *fixed;
...

我在periodCopy和fixedCopy上运行,希望不改变固定或周期。然而,情况似乎并非如此。它仍然看起来我正在修改我给函数的任何东西。我是c ++和指针的新手,我无法真正了解这里发生的事情。副本不应该指向与非复制品分开的数据吗?这是一项任务。如果我可以从指针更改参数,我相信我可以很容易地得到我想要的东西,但这不是一个选项。任何帮助表示赞赏。我希望这很清楚

1 个答案:

答案 0 :(得分:-1)

你正在复制自己。因此,您需要确保在从函数返回之前删除句点的副本并修复。

如果不需要复制,则在函数中使用const指针。

Type *Foo(unsigned int head, const Type *fixed, const Type *period)

更好的方法是使用参考。

Type *Foo(unsigned int head, const Type &fixed, const Type &period)
 //Now treat fixed and period as a normal object.

如果您需要复制,请按值传递参数。这将自动负责创建和销毁对象。但是复制构造函数必须是公共的。

 Type *Foo(unsigned int head, Type fixed, Type period)