关于返回const value和const reference value
来源:互联网 发布:我的淘宝显示新开店铺 编辑:程序博客网 时间:2024/05/19 19:33
最近对公司代码进行优化时发现很多类似下面的代码:
class A
{
public:
A()
{
cout<<"construct A"<<endl;
}
A(const A& a)
{
cout<<"copy construct A"<<endl;
}
int aa;
};
class B
{
private:
A a;
public:
const A GetA()
{
return a;
}
};
GetA返回的一个const A的值,而代码中经常出现以下测试代码的调用
int main()
{
B b;
cout<<b.GetA().aa<<endl;
return 0;
}
输出打印:
construct A
copy construct A
2009095316
而如果把 const A GetA()改为const A& GetA()
输出打印:
construct A
2009091650
很明显,少调用了一次拷贝构造函数,如果A是内置类型或者stl中的迭代器还好,而如果A是个非常复杂的数据结构,这样就非常的划不来了。
这种问题说出来其实大家都知道,但是每次自己写的时候或者使用接口的时候未必会注意,当然我这里只是针对的const value,如果想知道value可以看efffective c++中的条款21。
这里写出来只是希望注意一下
- 关于返回const value和const reference value
- 关于pass-by-reference-to-const和pass-by-value
- 关于 pass-by-reference-to-const 和 pass-by-value
- left value. right value. reference. const reference
- 尽量用pass-by-reference-to-const(const引用)替换pass-by-value(传值)
- 关于value和reference型别
- const int &i=value();
- l-value specifies const object
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- (小结)pass-by-reference-to-const替换pass-by-value
- 在利用pass-by-value传参数时发生slicing,改用pass-by-reference-to-const
- item20: 尽量以pass-by-reference-to-const替换pass-by-value
- Effective C++ Item 20 宁以pass-by-reference-to-const替换pass-by-value
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- 什么是 Web 服务?
- 让服务器系统更安全的七个配置步骤
- 祝福小怡帆顺利手术,早日康复!
- Linq to sql系列文章
- Unreal3的网游服务器
- 关于返回const value和const reference value
- 教你安装红旗linux服务器(多图)
- 【bug】逻辑实现的时机有误
- 设计模式学习与实践(十四)----门面模式(facade)
- 实施表完整性
- DB2中实现等级查询一
- 如何禁止PING WINDOWS服务器
- DB2中实现等级查询二
- 交换机性能参数