通过Qt类的getter返回值

时间:2018-12-31 10:54:55

标签: c++ qt

我无法弄清楚如何最好地从getters返回类成员的值。

QtCreator可以自动生成吸气剂。例如,对于类git submodule foreach '[ "$path" = "library/PhpExcel" ] || git status' 的成员,将创建以下函数:

QString m_string

getter按值返回QString类成员是否正确?便宜吗 如果我这样写会更好:

QString string() const;

1 个答案:

答案 0 :(得分:2)

  

如果我写这个会更好

“更好”是主观的。您确定这是性能问题吗?因为通常,不必要的微优化被认为是不好的编程习惯。

CoW的开销很小,但是除非您确定它会给您带来麻烦,否则您不必担心。如果您提出的方法更好,我相信Qt会使用该格式自动生成吸气剂,并在文档中提出该建议。

这并不意味着您的格式在特定的狭use用例中就不会客观地提高效率。但这确实意味着,尽管您可以像大多数人一样使用宏来设置属性,但要实现手动获取方法所需要的额外按键可能并不值得。

Qt使用的格式更为通用,例如,如果您想使用QML中的该属性,则该格式可能会出现问题,该属性可能不支持字符串引用,并且还没有从C ++委托const正确性。

此外,返回可变引用会打开修改对象属性的大门,而无需经过也会通知更改的正确代码路径,如果您的代码正在监视并对数据更改做出反应,则可能产生不利的副作用。我猜您在这里指的是属性,因为您谈论的是自动生成的获取器,而不是普通的类成员。