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