Mat*_*att 19 c++ pointers overloading reference
例如,如果我有一个结构FooSpec:
struct FooSpec { /* lots of data */ };
Run Code Online (Sandbox Code Playgroud)
将以下两个都作为重载函数提供是不好的做法吗?或者我应该选择一个并坚持下去?
Foo *createFoo(const FooSpec *spec) { /* ... */ }
Foo *createFoo(const FooSpec &spec) { return createFoo(&spec); }
Run Code Online (Sandbox Code Playgroud)
两者都会导致意想不到的问题?
我可以想到一个不太有用的理由来做这件事。
该Foo*版本可以检查空,处理这种情况,如果不使用的参考案例。
该Foo&则不能检查空。
这让调用者说“我知道这不是空的,因为我检查过”,在函数中保存一个分支。
然而,一旦该方法的成本超过一个非常低的阈值,这种好处(节省一个分支)就毫无意义了。
| 归档时间: |
|
| 查看次数: |
1714 次 |
| 最近记录: |