- 开销1:
考虑以下流程:也就是入参为非法值的时候,仍然执行了没有必要的1,增加了构造和析开销。
fun(int* p ){
string tmp; //1
if(p == null){
return null; //2
}
...
return tmp;
}
更好的方式是:以下情况出现不合适的入参,直接退出,就不会额外增加//1的构造和析构开销。
fun(int* p ){
if(p == null){
return null; //2
}
string tmp; //1
...
return tmp;
}
- 开销2
方法2比方法1好,方法1使用默认构造函数,并进行了赋值操作,而方法2仅使用了一次copy构造函数。
方法1:
string tmp;
tmp = b
方法2:
string tmp(b);