Effective C++ Chapter3-资源管理

2017-03-16  本文已影响0人  寒冰豌豆

13:以对象管理资源 Use object to manager resources

# include <iostream>
# include <tr1/memory>
using namespace std;
class A {
public:
    A() {
        cout << "construct A!!!" << endl;
    }
       ;
    ~A() {
        cout << "destruct A!!!" << endl;
    }
    ;
};
class B: public A {
public:
    B() {
        cout << "construct B!!!" << endl;
    }
    ;
    ~B() {
        cout << "destruct B!!!" << endl;
    }
    ;
};
int main() {
//  B* ptrB0 = new B();
    std::tr1::shared_ptr<B> ptrB1(new B());
}
//输出:
construct A!!!
construct B!!!
destruct B!!!
destruct A!!!

14:在资源管理类中小心copying行为

15:在资源管理类中提供对原始数据的访问

16:成对使用new 和delete时,采用相同形式。

std::string* stringPtr1 = new std::string;
std::string* stringPtr2 = new std::string[100];
delete stringPtr1; //删除一个对象
delete stringPtr2[ ]; //删除一个由对象组成的数组
typedef std::string AddressLines[4]   //尽量不要这样用
std::string* pal = new AddressLines;
//返回一个string* , 就像“new AddressLines[4]”一个
//上面就必须使用一个数组形式的delete[ ]

17:已独立的语句将newed对象置入智能指针

上一篇下一篇

猜你喜欢

热点阅读