背景:我正在制作一个简单的库。在其中,我返回了我创建的一个类,我可以,a)在堆栈上声明并期望用户在需要在堆上时复制到堆,或者,b)在堆并期望用户delete
在完成后使用该对象。
这些方法中哪一个是最佳实践,如果没有明确的赢家,应该在哪里使用?我想我会创建一个.dll
(.so
等),但是如果我创建不同类型的二进制文件,答案会改变吗?如果用户将标头和源代码复制到他们的项目中并在每次构建项目时构建整个库会发生什么。会发生什么变化?
旁注:我想第三种选择是允许参数来表示函数返回的对象是否在堆栈上。不过,这似乎真的很令人费解,而且我从未见过图书馆/API 这样做。第四种选择是允许指向一个已经存在的对象的指针,然后用新数据填充该对象。这种方式允许用户指定他们想要的对象类型,但它再次看起来相当复杂。