Effective C++补充

如果函数返回指针,则要小心了,最好要将其变为智能指针比如 int* ->shared_ptr<int>,并且在函数内部还可以改智能指针的删除器。即当引用计数为0时的举动,能够为函数或函数对象 。比如shared_ptr<int> ptr(int* a,f)  //f 为删除器。

 

返回值谨慎用by-reference  参数传递尽量用by reference

能够用non-member函数实现尽量用,因为封装性。

当然一个类的non-member函数可以是另一个类的member函数。

 

类中转换函数要看实际情况。

 

不要手动释放资源。

 

auto_ptr和shared_ptr都有get函数 得到原始指针

例: auto_ptr<int>ptr;  ptr.get()  返回一个int*

 

vector 和string动态分配数组。避免用指针。。

pimpl手法是定义成员函数swap中利用std::swap交换指针,再到类的namespace中定义一个swap函数中间调用swap成员函数,如果有可能,尽量再std中swap特化。

 

当调用swap时,第一反应在global或T的空间中找,然后std特化,然后default swap。

 

你可能感兴趣的:(Effective C++补充)