署理模式 + Effective C++ 第一章笔记

代理模式 + Effective C++ 第一章笔记

代理模式(Proxy):为其他对象提供一种代理以控制这个对象的访问。

应用:

(1);远程代理,为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实

(2);虚拟代理,根据需要创建开销大的对象。通过虚拟代理存放实例化需要很长时间的真是对象。

(3);安全代理,用来控制真是对象访问时的权限。

(4);智能指针,当调用真实的对象时,代理处理另外一些事。


Effective C++:


1:确定对象被使用前已经被初始化

(1),为内置类型进行手工初始化,因为C++不保证初始化他们

(2),够函数最好使用成员初始列(member initialization list),而不要在构造函数内使用赋值操作(assignment)。初始列列出的成员变量,期排列次序应该和他们在class中的生命次序相同。

(3),为免除“跨编译大暖初始化次序”问题,用local static 对象替换non-local static 对象(单例模式)


2:构造/析构/赋值运算


(1),编译器可以案子为class创建default构造函数、copy构造函数、copy assignment操作符,以及析构函数

(2),为驳回编译器自动提供的技能,可将相应的成员函数声明为private并且不予实现。使用像Uncopyable这样的base class也是一种做法。

class Uncopyable {
protected:
    Uncopyable() {}
    ~Uncopyable() {}
private:
    Uncopyable(const Uncopyable&);
    Uncopyable& operate=(const Uncopyable&);
};

(3),polymorphic base classes 应该声明一个virtual析构函数。如果class带有任何virtual函数,它就应该拥有一个virtual析构函数

(4),Classes 的设计目的如果不是作为base classes使用,或不是为了具备多态性(polymorphically),就不应该声明virtual 析构函数。