跟踪用C ++创建的对象的实践?

时间:2014-07-19 13:41:57

标签: c++

跟踪Java程序中对象数量的常用技术是关键字new的每个外观都表示已创建新对象。

但是,C ++在对象创建方面更灵活;我们可以有一个显式构造函数,隐式构造函数,复制初始化,在方法中按值返回一个对象,new关键字,等等。

对于C ++开发人员,您使用哪些常用技术来精确计算创建的对象数量(反对通过引用,指针等传递)?

我不确定这个问题是否属于Stack Overflow矿石更适合另一个Stack Exchange站点。请随时建议迁移。

1 个答案:

答案 0 :(得分:0)

这个问题没有受到太多关注,但我发现一个好的代码阅读技术是源文件中的原始类名称通常表示已经创建了一个新对象。

例如,如果我正在调用函数

Matrix multiply(Matrix a, Matrix b);

表示我们正在创建三个新对象,两个参数Matrix aMatrix b被复制到函数堆栈帧,Matrixmultiply返回Java被复制回调用者的框架(假设没有返回值优化或移动语义)。

我发现这种方法有用的一种方法是避免使用Matrix a = Matrix(4,5)样式构造函数,这对于某些编译器来说可能代价很高。例如,

Matrix

可能会创建一个临时的,未命名的矩阵,然后使用copy-constructor初始化命名的{{1}}。