C++中定义常量的途径:
- C中的#define预处理宏
- 类型安全的全局const
- 最小作用于enum
一定不要在析构函数中执行一些可能抛出异常的动作
智能指针
智能指针的代码

class U_Ptr { friend class HasPtr; int *ip; size_t use; U_Ptr(int *p) : ip(p), use(1){} ~U_Ptr(){delete ip;} }; class HasPtr { public: HasPtr(int *p, int i) : ptr(new U_Ptr(p)), val(i){} HasPtr(HasPtr const & orig) : ptr(orig.ptr), val(orig.val){ ++ptr->use; } HasPtr & operator = (HasPtr const &rhs) { ++rhs.ptr->use; if(--ptr->use == 0) delete ptr; ptr = rhs.ptr; val = rhs.val; return *this; } ~HasPtr() { if(--ptr->use == 0) delete ptr; } private: U_Ptr * ptr; int val; };
在类中有指针成员的话,一定要注意,一般有三种方法来管理指针成员:
- 常规的不作为,就是啥也不改,像使用其他成员一样使用指针成员
- 智能指针,指针指向的对象是共享的,用引用计数来确实是否要删除共享的对象
- 深度复制,就是将指针指向的内容复制一份到本对象来。