Cfront 如何插入构造函数

实际上复制构造函数的插入比较困难,比如在函数返回和传参的时候。由于 C 语言是按位复制(而不是按成员),cfront 会在函数调用前插入返回值变量声明,在函数中使用局部变量运算,并在返回时调用复制构造函数从局部变量复制成员到返回值处。

NRVO (Named Return Value Optimization) 则能省略返回时的复制构造:

关于返回值优化

RVO 的范畴很广,NRVO 是 RVO 的一种特例。

URVO(无名临时变量的优化):

NRVO(具名局部变量的返回的优化):